[英]Django email
我正在使用Gmail SMTP服務器向我網站的用戶發送電子郵件。
這些是我的settings.py中的默認設置
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'example@example.com'
EMAIL_HOST_PASSWORD = 'pwd'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
SERVER_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
如果我希望用戶發送電子郵件,我將覆蓋這些設置並使用Django的電子郵件發送方法發送電子郵件。 當系統發生異常時,我會收到來自example@example.com的電子郵件。 有時我收到一些登錄用戶的電子郵件。 這也可能意味着當用戶收到從我的網站發送的電子郵件時,它的發送地址與實際用戶不同。
應該怎么做才能避免這種情況?
當任何郵件發送函數傳遞None
或空字符串作為發件人地址時,Django僅使用settings.DEFAULT_FROM_EMAIL 。 這可以在django/core/mail.py
驗證。
當存在未處理的異常時,Django會調用django/core/mail.py
的mail_admins()
函數,該函數始終使用settings.SERVER_EMAIL並且僅發送到settings.ADMINS中列出的地址。 這也可以在django/core/mail.py
。
Django本身發送電子郵件的唯一其他地方是,如果settings.SEND_BROKEN_LINK_EMAILS為True,則CommonMiddleware會將郵件發送到settings.MANAGERS中列出的所有地址,電子郵件發件人為settings.SERVER_EMAIL 。
因此,當您調用send_mail()
時,普通用戶只能從您的站點接收電子郵件。 因此,始終將實際地址作為from_mail
參數傳遞,您將避免用戶從settings.SERVER_EMAIL或settings.DEFAULT_FROM_EMAIL接收電子郵件。
附注:django-registration是Django可插件的至少一個示例,它將從settings.DEFAULT_FROM_EMAIL發送郵件,因此在這種情況下,您需要確保它是一個正確的電子郵件地址,例如support@yoursite.com或webmaster @ yoursite.com。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.