Mailgun的Django电子邮件后端
django-mailgun的Python项目详细描述
用于Mailgun的Django电子邮件后端
概述
django mailgun是Django的邮件后端的一个下拉列表。
开始
安装Django Mailgun:
pip install django-mailgun
将以下内容添加到您的settings.py:
EMAIL_BACKEND = 'django_mailgun.MailgunBackend' MAILGUN_ACCESS_KEY = 'ACCESS-KEY' MAILGUN_SERVER_NAME = 'SERVER-NAME'
用mailgun帐户详细信息中的“api-key”值替换ACCESS-KEY,然后 SERVER-NAME与“api基url”的最后一部分 (例如https://api.mailgun.net/v3/<;您的服务器名>;),也可以在您的邮箱中找到 帐户详细信息。
现在,当您使用django.core.mail.send_mail时,mailgun将发送消息。
额外功能
传递特定于用户的数据
Mailgun还包括通过单个 api调用(https://documentation.mailgun.com/user_manual.html#batch-sending)。利用这个, 您需要将收件人变量与api调用一起传递。对Django Mailgun这么做, 将有效的json字符串添加到EmailMessage的extra_headers属性中,django mailgun将 从标题中删除字符串并适当地发送它。例如:
email = EmailMessage('Hi!', 'Cool message for %recipient.first_name%', 'admin@example.com', [joe@example.com, jane@example.com]) email.extra_headers['recipient_variables'] = '{"joe@example.com":{"first_name":"Joe"}, "jane@example.com":{"first_name":"Jane"}}' email.send()
当简收到她的电子邮件时,她的身体应该会读到“给简的酷消息”,乔会看到 “给乔的好消息”。
分析和其他跟踪功能
Mailgun提供跟踪与电子邮件有关的特定事件的功能。这个 api公开这些选项(请参见https://documentation.mailgun.com/api-sending.html#sending)。这些 选项也可以传递到Mailgun的SMTP服务器(请参见下面的“传递发送选项 https://documentation.mailgun.com/user_manual.html#sending-via-smtp)。如果你加上 django mailgun的EmailMessage属性的任何smtp选项 将这些值映射到适当的api参数。例如:
email = EmailMessage('Hi!', 'Cool message for Joe', 'admin@example.com', [joe@example.com]) email.extra_headers['X-Mailgun-Tag'] = ['Tag 1', 'Tag 2'] email.send()
当电子邮件发送时,它将被标记为“标记1”和“标记2”。您可以为 任何值,或包含可接受多个值的选项字符串的列表或元组。
将数据附加到消息
发送时,可以通过将自定义数据传递到x-mailgun-variables头将数据附加到邮件 (见https://documentation.mailgun.com/user_manual.html#attaching-data-to-messages)。 数据应格式化为json,并将包含在与电子邮件相关的任何webhook事件中。 包含自定义数据。例如:
email = EmailMessage('Hi!', 'Cool message for Joe', 'admin@example.com', [joe@example.com]) email.extra_headers['X-Mailgun-Variables'] = {'my-id': 'email_id', 'my-variable':'variable'} email.send()
稍后,您可以在mailgun webhook处理程序中读取此数据。例如:
def mailgun_webhook(request): email_id = request.data.get('my-id') my_variable = request.data.get('my-variable') # Do something with your variables return Response(status=status.HTTP_200_OK)
note:django mailgun不not 验证您的数据是否符合Mailgun的API;它只映射您提供的任何值。例如, Mailgun的API规定,每个电子邮件不允许超过3个标记,并且每个标记不得大于 128个字符(https://documentation.mailgun.com/user_manual.html#tagging)。如果你提供4个标签, 或者标记长度超过128个字符,Django Mailgun将尝试发送这样(可能)无效的 数据。你必须确保你发送的是适当的。