def save(self, user): mailing_list = MailingList.objects.get( pk=self.cleaned_data['mailing_list_id']) subject = "Nadine Subscribe/Unsubscribe Form" if self.cleaned_data['subscribe'] == 'true' and ( user.profile.is_active() or user.is_staff): mailing_list.subscribe(user) subject = '%s subscribed to %s' % (user.get_full_name(), mailing_list.name) elif self.cleaned_data[ 'subscribe'] == 'false' and user in mailing_list.subscribers.all( ): mailing_list.unsubscribe(user) subject = '%s unsubscribed from %s' % (user.get_full_name(), mailing_list.name) # Send a notification to the team mailgun_data = { "from": settings.DEFAULT_FROM_EMAIL, "to": [ settings.TEAM_EMAIL_ADDRESS, ], "subject": subject, "text": "So says Nadine!", } mailgun.mailgun_send(mailgun_data, inject_list_id=False) return True
def router(sender, **kwargs): """Route an incoming email to the appropriate destination.""" # Pull our email object and convert it to the mailgun_data we need` email = kwargs['instance'] strip_emails = getattr(settings, "COMLINK_STRIP_EMAILS", False) mailgun_data = email.get_mailgun_data(stripped=strip_emails) logger.debug("In Router: ") logger.debug(mailgun_data) # Pull our attachments and convert it to the list of files we need attachments = kwargs['attachments'] files = [] for a in attachments: files.append(('attachment', open(a.file.path, mode='rb'))) # Build out the BCC depending on who the recipient is bcc_list = None mailing_list = MailingList.objects.filter(address=email.recipient, enabled=True).first() if mailing_list: mailing_list.emailmessage_set.add(email) if mailing_list.is_members_only: if not mailing_list.is_subscriber(email.from_address): mailgun.send_template( 'email/non_member.txt', email.recipient, "Rejected Email [%s]" % mailing_list.name) raise mailgun.MailgunException( "Members Only Mailing List '%s' received email from non-member '%s'" % (mailing_list.name, email.from_address)) bcc_list = mailing_list.subscriber_addresses mailgun.inject_footer(mailgun_data, mailing_list.unsubscribe_url) if mailing_list.subject_prefix and mailing_list.subject_prefix not in mailgun_data[ "subject"]: mailgun_data["subject"] = ' '.join( (mailing_list.subject_prefix, mailgun_data["subject"])) elif hasattr(settings, "STAFF_EMAIL_ADDRESS" ) and settings.STAFF_EMAIL_ADDRESS in email.recipient: bcc_list = list( User.objects.filter(is_staff=True, is_active=True).values_list('email', flat=True)) mailgun.inject_footer(mailgun_data, email.public_url) elif hasattr(settings, "TEAM_EMAIL_ADDRESS" ) and settings.TEAM_EMAIL_ADDRESS in email.recipient: bcc_list = list( User.helper.managers(include_future=True).values_list('email', flat=True)) mailgun.inject_footer(mailgun_data, email.public_url) logger.debug("BCC List:") logger.debug(bcc_list) if bcc_list: # Pass this message along mailgun_data["bcc"] = bcc_list mailgun.mailgun_send(mailgun_data, files)
def send_manage_member(user, subject=None): if subject == None: subject = "Incomplete Tasks" subject = "%s - %s" % (subject, user.get_full_name()) if hasattr(settings, "EMAIL_SUBJECT_PREFIX"): # Adjust the subject if we have a prefix subject = settings.EMAIL_SUBJECT_PREFIX.strip() + " " + subject.strip() text_content, html_content = get_manage_member_content(user) mailgun_data = { "from": settings.DEFAULT_FROM_EMAIL, "to": [settings.TEAM_EMAIL_ADDRESS, ], "subject": subject, "text": text_content, "html": html_content, } if hasattr(settings, 'MAILGUN_DOMAIN'): return mailgun.mailgun_send(mailgun_data, inject_list_id=False)