使用 Django Python 发送电子邮件时出现错误 530 5.7.0 身份验证

gkc*_*sjk 6 python smtp

我正在尝试在 Django 中使用 python 使用 G-Suite 帐户发送电子邮件。由于 Google 停止为新应用程序提供不太安全的 App 选项,因此我必须使用 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'
Run Code Online (Sandbox Code Playgroud)

并且查了一下参考资料,意思是“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()
Run Code Online (Sandbox Code Playgroud)

小智 0

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
Run Code Online (Sandbox Code Playgroud)

将其添加到您的设置中。在那之后 :

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

您将进入Python shell。然后:

from django.core.mail import send_mail
Run Code Online (Sandbox Code Playgroud)

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

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

如果输出等于:

1

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