Django - Google App Engine灵活ENV上的SendMail

时间:2018-02-05 18:23:54

标签: python django email google-app-engine google-app-engine-python

有谁能告诉我如何配置在Google App Engine灵活环境中运行的Django应用程序来发送电子邮件?我们正在尝试在帐户/注册期间向用户发送确认电子邮件(我们正在使用django-allauth)。我们尝试配置App Engine以发送邮件不起作用。我们已经浪费了整整四天这个简单的事情。

这是我们目前的Django设置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'my_email_address@gmail.com'
EMAIL_PASSWORD = "'********"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'my_email_address@gmail.com'

我们的实际电子邮件地址(由上面的'my_email_addres@gmail.com'替换)是用于设置App Engine实例的所有者电子邮件地址。在App Engine设置中,我们将“my_email_address@gmail.com”配置为授权的电子邮件发件人。我们验证了我们可以使用我们在Django设置文件中提供的“my_email_address”和密码成功登录App Engine和Gmail。

但是,当用户尝试注册时,sendmail步骤将失败并显示以下错误消息(我编辑了下面编辑的服务器URL和电子邮件地址):

SMTPSenderRefused at /accounts/signup/
(530, b'5.5.1 Authentication Required. Learn more at\n5.5.1  https://support.google.com/mail/?p=WantAuthError c62sm5621898ioj.28 - gsmtp', 'my_email_address@gmail.com')
Request Method: POST
Request URL:    https://my_server_name.appspot.com/accounts/signup/
Django Version: 1.11.9
Exception Type: SMTPSenderRefused
Exception Value:    
(530, b'5.5.1 Authentication Required. Learn more at\n5.5.1  https://support.google.com/mail/?p=WantAuthError c62sm5621898ioj.28 - gsmtp', 'my_email_address@gmail.com')
Exception Location: /opt/python3.6/lib/python3.6/smtplib.py in sendmail, line 867
Python Executable:  /env/bin/python3.6
Python Version: 3.6.2

我们已经按照我们在网上找到的每条指令都没有取得任何成功。我们尝试使用其中一个G-Suite电子邮件地址作为发件人。但是,由于我们尚未将App Engine配置为使用我们的自定义域(我们仍然在appspot.com上),不足为奇,这不起作用。

有任何帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

App Engine灵活环境does not have a built in mail service like the standard environment。您需要使用SendGrid,Mailgun或Mailjet从灵活的环境发送电子邮件。

根据您的代码/应用,您可以配置单独的App Engine“service”来处理需要从您的应用的基于标准环境的子集触发电子邮件逻辑的请求使用标准环境的内置邮件服务。 App Engine应用程序可以是一种服务组合,可以在两种环境中运行,甚至可以在一种服务之间运行不同的语言。

不确定这会在您的情况下有效,但可能会。

相关问题