我怎样用Django发送邮件到我的gmail账户

e0bqpujr  于 2023-01-14  发布在  Go
关注(0)|答案(2)|浏览(167)

我试过在Django用Gmail账户发邮件,但总是出错。我试过用沙盒(Mailtrap),但用Gmail账户不行。我也试过在谷歌账户里用App密码,但还是不行。

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"

EMAIL_HOST = "smtp.gmail.com"

EMAIL_USE_TLS = True

EMAIL_PORT = 587

EMAIL_HOST_USER = "example@gmail.com"

EMAIL_HOST_PASSWORD = "password"

我总是出错;

SMTPConnectError at /send/
(421, b'Service not available')

请问这怎么能解决。

rjzwgtxy

rjzwgtxy1#

我最近使用Google App密码进行了验证。按照说明进行两步验证,获取密码,然后将其放入EMAIL_HOST_PASSWORD环境变量中并加上引号。(EMAIL_HOST_PASSWORD ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

最后,我使用send_mail发送视图中的电子邮件

from django.core.mail import send_mail
bgibtngc

bgibtngc2#

你有几个选择。

应用程序密码smtp

你使用的google账户是否启用了2fa,如果启用了,你就可以创建一个应用程序密码,然后在你的代码中使用这个密码。

XOauth2短消息传送协议

根据您用来发送电子邮件的系统,它可能支持Xoauth2授权。如果它支持,那么您可以使用它通过smtp服务器发送电子邮件。

Gmail API或服务帐户

你可以切换到使用gmail API,如果你有一个工作区帐户,那么你可以使用服务帐户。如果没有,那么你将需要坚持使用Oauth2和授权你的应用程序一次。这是类似于使用Xoauth2与smtp服务器,只是你将通过gmail api代替。
How to create a Apps Password for connecting to Google's SMTP server.

相关问题