我所拥有的:
john@contoso.com
); 我想要的:
我想配置Django,以便使用我的john@contoso.com
地址发送电子邮件。
我所做的事情:
我尝试了以下Django配置:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.office365.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'john@contoso.com'
EMAIL_HOST_PASSWORD = 'xxxxxx'
但是没有用。因此,为了测试,我尝试了免费的Google SMTP服务器:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'john@gmail.com'
EMAIL_HOST_PASSWORD = 'yyyyyy'
这次可以使用,但是很明显,电子邮件是从john@gmail.com
发送的,而不是从john@contoso.com
发送的。
以前的配置有什么问题?还是我需要在Office 365帐户中进行一些更改?
到目前为止,我已经尝试通过设置Django的ADMINS变量来接收电子邮件:
ADMINS = [('Admin Name', 'admin@gmail.com')]
然后我使用日志记录对象发送电子邮件:
logging.error("Hello admin!!")
如上所述,这仅在我使用smtp.gmail.com
时有效。今天,我尝试使用send_mail
函数:
send_mail(
'Subject here',
'Here is the message.',
'john@gmail.com',
['mail@gmail.com'],
fail_silently=False,
)
并且它同时使用smtp.gmail.com
和smtp.office365.com
配置。不幸的是,这对我来说不是一个有效的解决方案,因为如果发生错误或异常,我需要通知管理员。那么,为什么send_mail
函数可以与smtp.office365.com
一起使用而ADMIN
设置却不能呢?
答案 0 :(得分:1)
它不是Django,但只需确认SMTP中继正在使用PowerShell运行即可。确保“发件人”地址与用于身份验证的帐户相同。也可以尝试使用SSL来查看。
答案 1 :(得分:0)
要使用Office365 smtp服务器发送电子邮件,“发件人”用户和“主机”用户必须相同。所以我在Django中添加了此设置,以便向管理员发送电子邮件:
SERVER_EMAIL = EMAIL_HOST_USER
答案 2 :(得分:0)
尝试了几天后,唯一对我有用的是:
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER