使用 Django 和 Gmail 后端发送电子邮件

问题描述 投票:0回答:1

我正在努力使用 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]"
,但它似乎没有改变任何东西。

我也尝试了这篇文章中的解决方案,同样的问题。

python django email gmail gmail-api
1个回答
0
投票

Google 不再支持安全性较低的应用程序访问 请按照以下步骤操作

设置 Gmail 帐户应用程序密码 为了使 Django 能够通过 Gmail 发送电子邮件并遵守 Gmail 的发送策略,您需要设置安全性较低的应用程序访问并创建应用程序密码。

如果您没有设置安全性较低的应用程序访问权限,当您尝试发送电子邮件时,您将收到 SMTPAuthenticationError。

  1. 导航至 myaccount.google.com/lesssecureapps 并打开 less 保护应用程序的选项。

  2. 启用两步身份验证。这是为了使用所必需的 不太安全的应用程序。

  3. 导航至 myaccount.google.com/security 并向下滚动至 “登录 Google”部分。单击“应用程序密码”。

  4. 系统会要求您输入您的个人 Gmail 帐户密码。下一个, 单击“选择应用程序”并输入 Django 应用程序的名称。使用 与您在终端中为应用程序指定的名称相同 (DjangoEmailServer。)单击“生成”。

  5. 现在您可以将生成的应用程序密码复制到 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)
    

`

© www.soinside.com 2019 - 2024. All rights reserved.