2011-09-27 148 views
2

正如in the docs所述,SERVER_EMAIL設置應該改變從Django(1.3.1)服務器發送到ADMINS的崩潰電子郵件中的「發件人」地址。如何更改Django電子郵件中的發件人地址?

但事實並非如此。

這是否適合你在1.3.1? (或任何Django版本)

Django堅持只使用我的EMAIL_HOST_USER - 我的電子郵件登錄/實際地址 - 作爲發件人地址。我使用Gmail作爲SMTP服務器,所以我想知道這是否與它有關。 Gmail會阻止這類事情嗎?我發誓我已經得到這個工作。

這有點令人討厭,因爲我們有多個項目,似乎都是從同一個地址發送電子郵件,我們必須挖掘回溯來查看它是哪個項目。

回答

3

問題是Gmail。一直到smtplib庫,指定了正確的「發件人」地址,並且此庫將正確的地址發送到Gmail。

Gmail Support page意味着(特別是在「POP/IMAP」用戶注意事項的底部附近),您需要在Gmail的設置下添加地址作爲「附加電子郵件地址」,以便能夠通過Gmail的SMTP發送郵件服務器。

這當然需要驗證;因爲我的'發件人'地址沒有收件箱(這是假的!),目前它對我來說不可能。但至少它不是Django的bug! :)

(注:這是Gmail在垃圾郵件阻止你一個非常明顯的方式,我敢肯定,這就是爲什麼他們這樣做)

+0

非常intreesting,感謝您的更新。這聽起來像一個反垃圾郵件工具。 –

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中放置跟蹤輸出以驗證是否使用了正確的電子郵件地址。

+0

我給的是,當我有機會了(幾個)額外的分鐘︰) – Dave

相關問題