From c1c843102890fba5fbed3a698cbe0232d259dd4e Mon Sep 17 00:00:00 2001 From: Shivansh Date: Mon, 17 Feb 2025 20:57:07 +0530 Subject: [PATCH 1/2] fix(mailroom): email recipient handling for sending emails - Resolve issue where multiple email recipients (To, CC, BCC) were concatenated into a single string instead of a proper list. - Function `email_list()` to return a list of email addresses instead of a joined string. --- models.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index c77c3ce..59ccc23 100644 --- a/models.py +++ b/models.py @@ -91,6 +91,17 @@ def emailstr(self, header=None): return ",".join(contact_list) return + + def email_list(self, header=None): + if header is None: + return + if header not in ["to", "cc", "bcc"]: + return + if getattr(self, header).exists(): + contact_list = [contact.email for contact in getattr(self, header).all()] + return contact_list + + return def set_recipients(self, header, value): if header not in ["to", "cc", "bcc"]: @@ -143,20 +154,20 @@ def send(self): "reply_to": [self.sender.email], } - target_value = self.emailstr("to") + target_value = self.email_list("to") if target_value: - packet["to"] = [target_value] + packet["to"] = target_value else: # No To, no email return - target_value = self.emailstr("cc") - target_value = [target_value] if target_value else [] + target_value = self.email_list("cc") + target_value = target_value if target_value else [] target_value += getattr(app_settings, "MAILROOM_CC", []) packet["cc"] = target_value - target_value = self.emailstr("bcc") - target_value = [target_value] if target_value else [] + target_value = self.email_list("bcc") + target_value = target_value if target_value else [] target_value += getattr(app_settings, "MAILROOM_BCC", []) packet["bcc"] = target_value From c1bc00e179db26e6abca2503305dccedddf65d65 Mon Sep 17 00:00:00 2001 From: Shivansh Date: Mon, 1 Dec 2025 11:02:23 +0530 Subject: [PATCH 2/2] chore: Update migrations --- ...il_id_alter_contact_id_alter_message_id.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 migrations/0002_alter_bulkmail_id_alter_contact_id_alter_message_id.py diff --git a/migrations/0002_alter_bulkmail_id_alter_contact_id_alter_message_id.py b/migrations/0002_alter_bulkmail_id_alter_contact_id_alter_message_id.py new file mode 100644 index 0000000..bfcf3f7 --- /dev/null +++ b/migrations/0002_alter_bulkmail_id_alter_contact_id_alter_message_id.py @@ -0,0 +1,34 @@ +# Generated by Django 5.2.4 on 2025-08-18 10:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("mailroom", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="bulkmail", + name="id", + field=models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + migrations.AlterField( + model_name="contact", + name="id", + field=models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + migrations.AlterField( + model_name="message", + name="id", + field=models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ]