我拥有的:
- 在webs.com购买的域名(我将称之为contoso.com);
- 连接到该域的Office 365帐户(我的电子邮件地址类似于
john@contoso.com
); - 托管在Azure中的Django应用程序;
我想要什么:
我想配置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
设置却不能呢?