首页 > 解决方案 > 如何为 SMTP 配置 Django 和 G Suite

问题描述

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

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

标签: djangoemailgoogle-workspacedjango-settingsdjango-email

解决方案


在你的 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

推荐阅读