Flask Mail应用程序中使用的应用程序配置(遵循Miguel Grinberg Flask developlemt书籍):
app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
已正确设置并重新检查邮件用户名和密码变量。尝试使用以下代码发送消息时,
from flask.ext.mail import Message
from hello import mail
msg = Message('test subject', sender='same as MAIL_USERNAME', recipients=['check@mail.com'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
with app.app_context():
mail.send(msg)
发送时,应用程序会一次又一次地导致以下错误:
SMTPSenderRefused: (530, '5.5.1 Authentication Required. Learn more at\n5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qb10sm6828974pbb.9 - gsmtp', u'configured MAIL_USERNAME')
错误的解决方法是什么?
答案 0 :(得分:7)
在深入研究所面临的问题时,我重新检查了Google的SMTP设置,
更改
app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
到
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
做了这个伎俩。
还要确保将完整用户名用作 Gmail SMTP用户名,即 example@gmail.com 如上图所示。
希望这有帮助!!!
答案 1 :(得分:2)
我也按照这本书来解决同样的问题,经过一番挖掘后,我找到了问题的根本原因。但是,我不确定你是否也会这样。
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
正如您所见,您的烧瓶应用程序通过 os.environ.get()获取您的电子邮件凭据,如果您在系统中临时设置此环境变量,在我的Mac OSX中,之后您的终端会话将会消失,因此您需要在下次进入终端时再次设置它们,如下所示:
export MAIL_USERNAME=**YOUR EMAIL**
export PASSWORD=**YOUR PASSWORD**
由于这种情况,我收到此错误,为了永久设置它们,您需要将这些变量包含在主目录中的 .bash_profile 文件中。
答案 2 :(得分:0)
做以下两件事来解决:
使用此链接并打开“允许不太安全的应用程序”-https://myaccount.google.com/lesssecureapps
对电子邮件和密码使用硬编码值,效果很好。 只需在文件“ init .py”中,编辑以下部分:
不要使用os.environ.get
app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
app.config['MAIL_PASSWORD'] = 'yourpassword'
答案 3 :(得分:0)
您需要更改您的Google帐户设置。在this page上,打开“允许安全程度较低的应用程序”选项。
该页面显示:
某些应用和设备使用的安全性较低的登录技术,这会使您的帐户更容易受到攻击。您可以关闭访问这些应用程序(我们建议),或者打开访问权限(如果有使用风险的话)。 Learn more