【问题标题】:Get Error 530 5.7.0 Authentication Required when sending email using Django Python使用 Django Python 发送电子邮件时获取错误 530 5.7.0 身份验证
【发布时间】:2020-05-13 17:56:33
【问题描述】:

我正在尝试使用 Django 中的 python 使用 G-Suite 帐户发送电子邮件。由于谷歌停止了新应用程序的不太安全的应用程序选项,我不得不使用 Oauth2。 但是当我开始通过 smtplib 发送电子邮件时,错误:

smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. Learn more at\n5.7.0  https://support.google.com/mail/?p=WantAuthError q4sm8418287pfl.175 - gsmtp'

而且查到引用后,意思是“530,”5.7.0“,必须先发出STARTTLS命令。” 但是,我添加了“server.starttls()”。有人可以帮我吗?非常感谢。

server = smtplib.SMTP('smtp.gmail.com', port=587)
server.ehlo('test')
server.starttls()
server.docmd('AUTH', 'XOAUTH2 ' + base64.b64encode(auth_string.encode()).decode("utf-8"))
server.sendmail(from_addr, to_addr, msg.as_string())
server.quit()

【问题讨论】:

标签: python smtp


【解决方案1】:
EMAIL_BACKEND="django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST_USER ='youremail@gmail.com' 
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_PASSWORD = 'yourpassword'
EMAIL_USE_TLS = True

将此添加到您的设置中。之后:

python manage.py shell

您将进入 Python shell。那么:

from django.core.mail import send_mail

在 shell 上编写此命令,然后:

send_mail(
    "django test mail",
    "this is django test mail",
    "your.email@gmail.com",
    "recipient.email@example.com",
    fail_silently=False
)

如果输出等于:

1

,然后您通过 Gmail 发送电子邮件。

【讨论】:

  • 我这样做了,但收到错误 smtplib.SMTPAuthenticationError: (535, b'5.7.8 用户名和密码不被接受。用户名和密码正确。
【解决方案2】:

根据https://stackabuse.com/how-to-send-emails-with-gmail-using-python/#:~:text=As%20for%20the%20actual%20Python,com'%2C%20465)%20server.,您可能已开启两步验证。

要使您的网络应用能够从/向您的 gmail 发送 SMTP,您需要为安全性较低的应用创建应用专用密码。

  1. 转到您的 Google 帐户。
  2. 选择安全性。
  3. 在“登录 Google”下,选择应用密码。你可能需要 登录。如果您没有此选项,可能是因为:2-Step 未为您的帐户设置验证。两步验证是 只为安全密钥设置。您的帐户是通过工作、学校、 或其他组织。您开启了高级保护。
  4. 在底部,选择选择应用程序并选择 您正在使用的应用程序,然后选择设备并选择设备 您正在使用,然后生成。
  5. 将黄色栏中的 16 个字符的代码放入您的 环境变量作为您的“EMAIL_HOST_PASSWORD”

【讨论】:

  • 从上面的第 4 点开始,当您进入“选择要为其生成应用密码的应用和设备”时。您需要点击“其他(客户名称)”并在“选择设备”中选择“其他(客户名称)”。然后,由于您使用它来发送电子邮件,因此您指定了 url 或您的网站,例如。 mywebsite.com。然后点击“生成”。然后根据需要使用代码中生成的 16 字符代码,和/或 Heroku 配置变量
猜你喜欢
  • 1970-01-01
  • 2012-07-28
  • 2015-11-23
  • 2017-02-26
  • 2018-10-07
  • 2012-08-10
  • 1970-01-01
  • 2016-07-27
  • 2013-11-30
相关资源
最近更新 更多