Django针对Amazon SE、Mailgun、Mailjet、Postmark、SendGrid、SendInBlue、SparkPost和其他事务性ESP的电子邮件集成

django-anymail的Python项目详细描述


Anymail将多个事务性电子邮件服务提供商(ESP)集成到Django中, 具有一致的API,允许您使用ESP添加的功能而不必锁定代码 对于特定的ESP。

它目前完全支持amazon ses、mailgun、mailjet、postmark、sendinblue、sendgrid, 以及SparkPost,并且对Mandrill的支持有限。

AnyMail规范了ESP功能,因此它与Django的 内置django.core.mail包。它包括:

  • 支持HTML、附件、额外标题和 Django’s built-in email
  • 使使用额外ESP功能变得容易的扩展,如标记、元数据, 以及跟踪,使用ESP之间可移植的代码
  • HTML电子邮件的简化内联图像
  • 通过连接 您的ESP的网络连接到django信号
  • 使用ESP的合并和模板功能发送“批量事务处理”
  • 入站消息支持,通过ESP的Webhook接收电子邮件, 通过对附件和其他入站内容的简化、可移植的访问

任何邮件都是根据bsd许可证发布的。它被广泛的测试 django 1.11–2.2(包括python 2.7、python 3和pypy)。 任何邮件发布都在semantic versioning之后

build status on Travis-CIdocumentation on ReadTheDocs

资源

任何邮件1-2-3

下面是如何发送消息的。 本例使用mailgun,但您可以替换mailjet、邮戳或sendgrid 或SparkPost或任何其他支持的ESP,其中您可以看到“mailgun”:

  1. 从pypi安装任何邮件:

    $ pip install django-anymail[mailgun]

    [mailgun]部分安装该esp所需的任何其他包。 Mailgun没有,但其他一些ESP有。)

  2. 编辑项目的settings.py

    INSTALLED_APPS=[# ..."anymail",# ...]ANYMAIL={# (exact settings here depend on your ESP...)"MAILGUN_API_KEY":"<your Mailgun key>","MAILGUN_SENDER_DOMAIN":'mg.example.com',# your Mailgun domain, if needed}EMAIL_BACKEND="anymail.backends.mailgun.EmailBackend"# or sendgrid.EmailBackend, or...DEFAULT_FROM_EMAIL="you@example.com"# if you don't already have this in settingsSERVER_EMAIL="your-server@example.com"# ditto (default from-email for Django errors)
  3. 现在是常规的Django email functions 将通过您选择的ESP发送:

    fromdjango.core.mailimportsend_mailsend_mail("It works!","This will get sent through Mailgun","Anymail Sender <from@example.com>",["to@example.com"])

    你可以发送一条HTML消息,包括一个内联图像, 自定义标记和元数据:

    fromdjango.core.mailimportEmailMultiAlternativesfromanymail.messageimportattach_inline_image_filemsg=EmailMultiAlternatives(subject="Please activate your account",body="Click to activate your account: http://example.com/activate",from_email="Example <admin@example.com>",to=["New User <user1@example.com>","account.manager@example.com"],reply_to=["Helpdesk <support@example.com>"])# Include an inline image in the html:logo_cid=attach_inline_image_file(msg,"/path/to/logo.jpg")html="""<img alt="Logo" src="cid:{logo_cid}">
              <p>Please <a href="http://example.com/activate">activate</a>
              your account</p>""".format(logo_cid=logo_cid)msg.attach_alternative(html,"text/html")# Optional Anymail extensions:msg.metadata={"user_id":"8675309","experiment_variation":1}msg.tags=["activation","onboarding"]msg.track_clicks=True# Send it:msg.send()

full documentation 更多功能和选项,包括接收消息和跟踪 已发送消息状态。

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

推荐PyPI第三方库


热门话题
在java中将字符串转换为音频输入   java如何使用Spring Boot RestTemplate解组json列表   计算机上C++ OpenCV项目转换为OpenCV Android的java步骤   Java Spring Telegraf数据表不工作   openurlconnection与connect之间的java差异?   java Solr字段搜索、通配符和转义字符   java如何使用DLFolderLocalServiceUtil类的getFolders()方法?   尝试用Java编写文件   java连续双缓冲解决方案不起作用   两个数组的Java乘积   java Jackson,如何正确编写自定义反序列化程序   java将布尔标志按一定顺序排列以获得更好的性能是否有意义   java Vaadin无缓冲网格无法关闭   java在MySQL中以同一用户身份同时从不同客户端登录安全吗?   java如何使用安卓asynchttp库   java无法在Android中使用AlarmManager停止服务   java在Hibernate的XML配置文件中指定默认值   Spring启动应用程序中的java内存SQLITE不工作   Java代码无法写入文本文件,