diff --git a/mails/mixins.py b/mails/mixins.py index c85a5356841da17f6452f378df975af5e3bb885c..e34dd97123125c66c502413ace9248fba4a3d93e 100644 --- a/mails/mixins.py +++ b/mails/mixins.py @@ -137,27 +137,41 @@ class MailUtilsMixin: self.subject = self.mail_data['subject'] - def validate_bcc_list(self): - # Get recipients list. Try to send through BCC to prevent privacy issues! - self.bcc_list = [] - if self.mail_data.get('bcc_to', False) and self.object: - if re.match("[^@]+@[^@]+\.[^@]+", self.mail_data.get('bcc_to')): - self.bcc_list = [self.mail_data.get('bcc_to')] + def _validate_single_entry(self, entry): + """ + entry -- raw email string or path or properties leading to email mail field + + Returns a list of email addresses found. + """ + if entry and self.object: + if re.match("[^@]+@[^@]+\.[^@]+", entry): + # Email string + return [entry] else: bcc_to = self.object - for attr in self.mail_data.get('bcc_to').split('.'): + for attr in entry.split('.'): try: bcc_to = getattr(bcc_to, attr) except AttributeError: # Invalid property, don't use bcc - return + return [] if not isinstance(bcc_to, list): - self.bcc_list = [bcc_to] + return [bcc_to] else: - self.bcc_list = bcc_to - elif re.match("[^@]+@[^@]+\.[^@]+", self.mail_data.get('bcc_to', '')): - self.bcc_list = [self.mail_data.get('bcc_to')] + return bcc_to + elif re.match("[^@]+@[^@]+\.[^@]+", entry): + return [entry] + + def validate_bcc_list(self): + """ + bcc_to in the .json file may contain multiple raw email addreses or property paths to + an email field. The different entries need to be comma separated. + """ + # Get recipients list. Try to send through BCC to prevent privacy issues! + self.bcc_list = [] + for bcc_entry in self.mail_data.get('bcc_to', '').split(','): + self.bcc_list += self._validate_single_entry(bcc_entry) def validate_recipients(self): # Check the send list diff --git a/mails/templates/mail_templates/registration_invitation.json b/mails/templates/mail_templates/registration_invitation.json index 35371fb03b8f66c7cf20f927db7a371782e5b2eb..4c7426326117b5a762f1fc57575eb9f1954c3fa3 100644 --- a/mails/templates/mail_templates/registration_invitation.json +++ b/mails/templates/mail_templates/registration_invitation.json @@ -1,7 +1,7 @@ { "subject": "SciPost: invitation", "to_address": "email", - "bcc_to": "invited_by.email", + "bcc_to": "invited_by.email,admin@scipost.org", "from_address_name": "SciPost Registration", "from_address": "registration@scipost.org", "context_object": "invitation" diff --git a/mails/templates/mail_templates/registration_invitation_reminder.json b/mails/templates/mail_templates/registration_invitation_reminder.json index 1ab25d8c8e72ff860d9af4206707c5c6d57e3615..6ed2b96fe650b6de07b9b38e8ae29bbfedc1462e 100644 --- a/mails/templates/mail_templates/registration_invitation_reminder.json +++ b/mails/templates/mail_templates/registration_invitation_reminder.json @@ -1,7 +1,7 @@ { "subject": "RE: SciPost: invitation", "to_address": "email", - "bcc_to": "invited_by.email", + "bcc_to": "invited_by.email,admin@scipost.org", "from_address_name": "SciPost Registration", "from_address": "registration@scipost.org", "context_object": "invitation" diff --git a/mails/templates/mail_templates/submissions_referee_invite.json b/mails/templates/mail_templates/submissions_referee_invite.json index a5d6803a492d16ba59c1f6bd4062ae8183597f90..c1495012e13e12c449a53bf25d853a139487af0e 100644 --- a/mails/templates/mail_templates/submissions_referee_invite.json +++ b/mails/templates/mail_templates/submissions_referee_invite.json @@ -1,7 +1,7 @@ { "subject": "SciPost: refereeing request", "to_address": "referee.user.email", - "bcc_to": "submission.editor_in_charge.user.email", + "bcc_to": "submission.editor_in_charge.user.email,admin@scipost.org", "from_address_name": "SciPost Refereeing", "from_address": "refereeing@scipost.org", "context_object": "invitation"