簡體   English   中英

Django電子郵件

[英]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.pymail_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_EMAILsettings.DEFAULT_FROM_EMAIL接收電子郵件。

附注:django-registration是Django可插件的至少一個示例,它將從settings.DEFAULT_FROM_EMAIL發送郵件,因此在這種情況下,您需要確保它是一個正確的電子郵件地址,例如support@yoursite.com或webmaster @ yoursite.com。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM