如何为 SMTP 配置 Django 和 G Suite

Posted

技术标签:

【中文标题】如何为 SMTP 配置 Django 和 G Suite【英文标题】:How to configure Django and G Suite for SMTP 【发布时间】:2020-03-11 08:30:48 【问题描述】:

当用户在我的网站上注册时,会向用户发送一封电子邮件以确认他/她的电子邮件。 它适用于以下设置:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'abcdefghiklmnopq'
EMAIL_PORT = 587

现在我想切换到 noreply@mydomain.com。 我在 G Suite 上创建了一个帐户并进行了以下配置:

综合邮件存储(本地应用) 发送和接收的邮件存储在关联用户的邮箱中:开

SMTP 中继服务(本地应用)ms_mail 允许发件人:仅限 我的域中的地址 仅接受来自指定 IP 的邮件 地址:否 需要 SMTP 身份验证:是 需要 TLS 加密: 是的

安全性较低的应用程序(本地应用)允许用户管理他们对安全性较低的应用程序的访问 不太安全的应用程序

允许安全性较低的应用:开启

比我创建了一个应用密码并尝试了很多这样的配置:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp-relay.gmail.com'
EMAIL_HOST_USER = 'noreply@mydomain.com'
EMAIL_HOST_PASSWORD = 'abcdefghiklmnopq'
DEFAULT_FROM_EMAIL = 'noreply@mydomain.com'
SERVER_EMAIL = 'noreply@mydomain.com'
EMAIL_PORT = 465

我在 Google 或 Django 上找不到关于如何配置设置的好文档。有人现在是一个很好的资源吗?应用程序密码/不太安全的应用程序是正确的方法吗?因为谷歌有一些安全警告。 Noreply 是一个组,但我为 my.name@mydomain.com 创建了应用程序密码。当我是小组的一员时,这是一个问题吗?我还用 my.name@mydomain.com 而不是 noreply@mydomain.com 尝试了几个选项,但我总是得到错误

smtplib.SMTPServerDisconnected: Connection unexpectedly closed

【问题讨论】:

【参考方案1】:

在你的 settings.py 中使用它

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'noreply@mydomain.com'
EMAIL_HOST_PASSWORD = '#########'
EMAIL_PORT = 587

【讨论】:

不幸的是,这对我不起作用。有什么选择吗? @Marco 你遇到了什么类型的错误?

以上是关于如何为 SMTP 配置 Django 和 G Suite的主要内容,如果未能解决你的问题,请参考以下文章

如何为 GTK3 配置 VSCode 以进行智能感知/构建/调试和 g++

如何为 Django 应用程序配置数据库权限?

如何为我的 django 应用程序编写注销功能?

如何为 smtp 进行 web.config 转换?

如何为 django 驱动的 flash 站点的小型托管公司配置服务器?

如何为 microk8s grafana 设置 SMTP(prometheus 插件)