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字符串添加到EmailMessageextra_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将尝试发送这样(可能)无效的 数据。你必须确保你发送的是适当的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库