我正在努力使用 Gmail 后端通过自定义域发送电子邮件。
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"]
EMAIL_HOST_PASSWORD = os.environ["EMAIL_HOST_PASSWORD"]
EMAIL_PORT = 587
EMAIL_USE_TLS = True
email = EmailMessage(
subject,
content,
"[email protected]",
[customer.email]
)
email.send()
我已经使用自定义域创建了一个 Google 帐户并生成了应用程序密码,但是当使用自定义域
EMAIL_HOST_USER
时,我得到 (535, b'5.7.8 Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentials')
:
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"] # [email protected]
然后我尝试使用 gmail.com 域的 Google 帐户,这次成功了:
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"] # [email protected]
所以我需要发件人的邮件与
[email protected]
不同。
我尝试在 Google 中添加辅助邮件地址,并使用了 DEFAULT_FROM_EMAIL = "[email protected]"
,但它似乎没有改变任何东西。
我也尝试了这篇文章中的解决方案,同样的问题。
Google 不再支持安全性较低的应用程序访问 请按照以下步骤操作
设置 Gmail 帐户应用程序密码 为了使 Django 能够通过 Gmail 发送电子邮件并遵守 Gmail 的发送策略,您需要设置安全性较低的应用程序访问并创建应用程序密码。
如果您没有设置安全性较低的应用程序访问权限,当您尝试发送电子邮件时,您将收到 SMTPAuthenticationError。
导航至 myaccount.google.com/lesssecureapps 并打开 less 保护应用程序的选项。
启用两步身份验证。这是为了使用所必需的 不太安全的应用程序。
导航至 myaccount.google.com/security 并向下滚动至 “登录 Google”部分。单击“应用程序密码”。
系统会要求您输入您的个人 Gmail 帐户密码。下一个, 单击“选择应用程序”并输入 Django 应用程序的名称。使用 与您在终端中为应用程序指定的名称相同 (DjangoEmailServer。)单击“生成”。
现在您可以将生成的应用程序密码复制到 settings.py 文件中的 EMAIL_HOST_PASSWORD 值。
从 django.core.mail 导入 send_mail 从 django.conf 导入设置
send(subject, message, recipients):
send_mail(
subject=subject,
message=message,
from_email=settings.EMAIL_HOST_USER,
recipient_list=recipients)
`