El_*_*ero 6 django smtp office365
我拥有的:
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'
Run Code Online (Sandbox Code Playgroud)
但没有成功。因此,为了测试,我尝试了免费的 Google SMTP 服务器:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'john@gmail.com'
EMAIL_HOST_PASSWORD = 'yyyyyy'
Run Code Online (Sandbox Code Playgroud)
这次它起作用了,但显然,电子邮件是从 发送的john@gmail.com,而不是从 发送的john@contoso.com。
之前的配置有什么问题吗?或者我可能需要对我的 Office 365 帐户进行一些更改?
到目前为止,我尝试通过以下方式设置 Django 的 ADMINS 变量来接收电子邮件:
ADMINS = [('Admin Name', 'admin@gmail.com')]
Run Code Online (Sandbox Code Playgroud)
然后我使用日志记录对象发送电子邮件:
logging.error("Hello admin!!")
Run Code Online (Sandbox Code Playgroud)
如前所述,这仅在我使用时才有效smtp.gmail.com。今天我尝试使用该send_mail功能:
send_mail(
'Subject here',
'Here is the message.',
'john@gmail.com',
['mail@gmail.com'],
fail_silently=False,
)
Run Code Online (Sandbox Code Playgroud)
它既可以使用smtp.gmail.com也可以smtp.office365.com配置。不幸的是,这对我来说不是一个有效的解决方案,因为我需要在出现错误或异常时通知管理员。那么,为什么该send_mail功能可以工作smtp.office365.com而ADMIN设置却不能呢?
这篇文章是此处找到的提案的综合。
截至 2022 年 4 月,这个完整的配置对于本机 django 电子邮件配置来说就像一个魅力:
EMAIL_HOST = os.getenv("APP_EMAIL_HOST", "smtp.office365.com")
EMAIL_PORT = os.getenv("APP_EMAIL_PORT", 587)
EMAIL_HOST_USER = os.getenv("APP_EMAIL_HOST_USER")
SERVER_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = os.getenv("APP_EMAIL_HOST_PASSWORD")
EMAIL_USE_TLS = os.getenv("APP_EMAIL_USE_TLS", True)
EMAIL_TIMEOUT = os.getenv("APP_EMAIL_TIMEOUT", 60)
Run Code Online (Sandbox Code Playgroud)
然后就是为您的应用程序配置电子邮件和密码。#此外,请避免在 Linux 环境变量中使用密码,因为它们特别难以逃脱。
要使用 Office365 smtp 服务器发送电子邮件,“发件人”用户和“主机”用户必须相同。因此,我在 Django 中添加了此设置,以便向管理员发送电子邮件:
SERVER_EMAIL = EMAIL_HOST_USER
| 归档时间: |
|
| 查看次数: |
9610 次 |
| 最近记录: |