当前位置:  开发笔记 > 编程语言 > 正文

Django电子邮件

如何解决《Django电子邮件》经验,为你挑选了1个好方法。

我正在使用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的电子邮件.有时我收到一些登录用户的电子邮件.这也可能意味着当用户收到从我的网站发送的电子邮件时,它的发送地址与实际用户不同.

应该怎么做才能避免这种情况?



1> Van Gale..:

Django仅在任何邮件发送函数传递时使用settings.DEFAULT_FROM_EMAILNone或将空字符串作为发件人地址.这可以通过验证django/core/mail.py.

当存在未处理的异常时,Django会调用始终使用settings.SERVER_EMAILmail_admins()函数,并且发送到settings.ADMINS中列出的地址.这也可以在中进行验证.django/core/mail.pydjango/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.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有