如何在Django Email中更改发件人地址?

时间:2011-09-27 18:15:43

标签: python django email gmail

如上所述in the docsSERVER_EMAIL设置应该更改从Django(1.3.1)服务器发送到ADMINS的崩溃电子邮件中的“发件人”地址。

但事实并非如此。

这在1.3.1中适合您吗? (或任何Django版本)

Django坚持只使用我的EMAIL_HOST_USER - 我的电子邮件登录/实际地址 - 作为来自地址。我正在使用Gmail作为SMTP服务器,所以我想知道这是否与它有关。 Gmail会阻止此类事情吗?我发誓我之前已经开始工作了。

这有点烦人,因为我们有多个项目似乎都是来自同一地址的电子邮件,我们必须深入了解追溯,看看它是哪个项目。

2 个答案:

答案 0 :(得分:3)

问题是Gmail。一直到smtplib库,指定了正确的“发件人”地址,此库会将正确的地址发送给Gmail。

Gmail Support page暗示(特别是在“POP / IMAP注释”用户的底部附近)您需要在Gmail设置下添加地址作为“附加电子邮件地址”才能从中发送邮件通过Gmail的SMTP服务器。

这当然需要验证;因为我的'from'地址没有收件箱(这是假的!),目前我不可能。但至少它不是Django的错误! :)

(注意:这是Gmail阻止您发送垃圾邮件的一种非常明显的方式,我确信这就是他们这样做的原因。)

答案 1 :(得分:1)

从我在代码(1.3.1)中看到的,堆栈跟踪电子邮件是使用mail_admins方法发送的,SERVER_EMAIL是从地址指定的:

mail = EmailMultiAlternatives(u'%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject),
                message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS],
                connection=connection)

定义为:

class EmailMultiAlternatives(EmailMessage):
   [...]
   def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,
            connection=None, attachments=None, headers=None, alternatives=None,
            cc=None):

我建议在EmailMultiAlternatives中添加跟踪输出,以验证是否正在使用正确的电子邮件地址。