示例#1
0
    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
示例#2
0
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
示例#3
0
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)
示例#4
0
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)