def test_template_unsupported(self): """A lot of options are not compatible with SendBulkTemplatedEmail""" message = AnymailMessage(template_id="welcome_template", to=['*****@*****.**']) message.subject = "nope, can't change template subject" with self.assertRaisesMessage(AnymailUnsupportedFeature, "overriding template subject"): message.send() message.subject = None message.body = "nope, can't change text body" with self.assertRaisesMessage(AnymailUnsupportedFeature, "overriding template body content"): message.send() message.content_subtype = "html" with self.assertRaisesMessage(AnymailUnsupportedFeature, "overriding template body content"): message.send() message.body = None message.attach("attachment.txt", "this is an attachment", "text/plain") with self.assertRaisesMessage(AnymailUnsupportedFeature, "attachments with template"): message.send() message.attachments = [] message.extra_headers = {"X-Custom": "header"} with self.assertRaisesMessage(AnymailUnsupportedFeature, "extra_headers with template"): message.send() message.extra_headers = {} message.metadata = {"meta": "data"} with self.assertRaisesMessage(AnymailUnsupportedFeature, "metadata with template"): message.send() message.metadata = None message.tags = ["tag 1", "tag 2"] with self.assertRaisesMessage(AnymailUnsupportedFeature, "tags with template"): message.send() message.tags = None
def prepare_email(from_address, to, subject, text_template, html_template, template_context, anymail_tags): if not get_language(): language = getattr(settings, 'LANGUAGE_CODE', 'en') activate(language) text_body = loader.get_template(text_template).render(template_context) email = AnymailMessage( subject=subject, body=text_body.strip('\n'), from_email=from_address, to=to ) if anymail_tags: email.tags = list(map(force_text, anymail_tags)) if html_template: html_body = loader.get_template(html_template).render(template_context) email.attach_alternative(html_body, 'text/html') return email
def send_email(subject, body, recipient_list, from_email=settings.DEFAULT_FROM_EMAIL, html_body=None, tags=None, fail_silently=False): message = AnymailMessage(subject=subject, body=body, to=recipient_list) message.from_email = from_email if html_body: message.attach_alternative(html_body, 'text/html') # Tags can then be found and filtered in the ESP's analytics dashboard if tags: message.tags = tags message.send(fail_silently=fail_silently)
def send_email_with_template(recipient_list, template_id, data=None, tags=None, fail_silently=False): """Use the "template" feature provided by our ESP""" message = AnymailMessage(to=recipient_list) message.template_id = template_id message.from_email = None # use the template's default sender # Tags can then be found and filtered in the ESP's analytics dashboard if tags: message.tags = tags # Provide data for template replacements if data: # Currently working with Sendinblue message.merge_global_data = data message.send(fail_silently=fail_silently)