如何在 Django 中为 EmailMultiAlternatives 自定义电子邮件后端

Posted

技术标签:

【中文标题】如何在 Django 中为 EmailMultiAlternatives 自定义电子邮件后端【英文标题】:How to customize email backend for EmailMultiAlternatives in Django 【发布时间】:2012-02-14 02:04:55 【问题描述】:

背景:-

我的电子邮件后端是这样的:

EMAIL_HOST ='smtp.gmail.com' 
EMAIL_PORT = 587
EMAIL_HOST_USER = 'feedback@example.com' 
EMAIL_HOST_PASSWORD = 'XXX' 
EMAIL_USE_TLS = True

问题:-

我正在使用 EmailMultiAlternatives 发送 html 邮件。 现在我想定义 auth_user 和 auth_password 以便我可以更改“来自”。基本上我想超越 EMAIL_HOST_USER,但希望 from_email 冗长,即“支持团队”。怎么办?

subject, from_email, to = "hello", 'Support Team','to_user@gmail.com'
text = "hello"
html = "<strong>hello</strong>"
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send(fail_silently=False,auth_user = 'support@example.me',auth_password = 'XXX')

【问题讨论】:

【参考方案1】:

你可以这样做:

from django.core.mail import *

#retrieve emailbackend from settings.py
connection = get_connection(username, password)
#change connection parameters
connection.host='XXX'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to], connection)
msg.attach_alternative(html_content, "text/html")

【讨论】:

connection.close() 是不需要的。它将引发错误,因为 send_messages 会关闭它打开的所有连接。 当 msg.send() 抛出异常时,我能够使用这个想法切换到备用 SMTP 服务器。效果很好。 可以直接传入连接。

以上是关于如何在 Django 中为 EmailMultiAlternatives 自定义电子邮件后端的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中为分组选项设置默认值

如何在 django 中为分组选项设置默认值

如何在 django 中为选项标签添加属性?

如何在 django 中为选项标签添加属性?

如何在 Django 中为页面添加书签?

django + celery - 如何在我的 django 应用程序中为 celery 设置 crontab 计划?