13

Flask Mail 应用程序中使用的应用程序配置(遵循 Miguel Grinberg Flask 开发书):

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')

该错误的任何解决方法?

4

4 回答 4

8

在深入研究面临的问题时,我重新检查了 Google 的 SMTP 设置,

谷歌 SMTP 设置

改变

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'

app.config['MAIL_SERVER'] = 'smtp.gmail.com'

成功了。

还要确保将完整用户名用作Gmail SMTP 用户名,即example@gmail.com,如上图所示。

希望这可以帮助!!!

于 2015-01-29T08:17:09.473 回答
2

您需要更改您的 Google 帐户设置。在此页面上,打开“允许安全性较低的应用程序”选项。

正如该页面所说:

某些应用和设备使用安全性较低的登录技术,这会使您的帐户更容易受到攻击。您可以关闭我们推荐的这些应用程序的访问权限,或者如果您想在有风险的情况下使用它们,则可以打开访问权限。学到更多

于 2019-04-10T15:20:20.947 回答
1

我也跟着这本书,遇到了同样的问题,经过一番挖掘,我找到了问题的根本原因。但是,我不确定您是否会遇到同样的情况。

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文件中。

于 2017-01-20T09:09:51.500 回答
1

做这2件事来解决:

  1. 使用此链接并打开“允许不太安全的应用”- https://myaccount.google.com/lesssecureapps

  2. 对电子邮件和密码使用硬编码值,效果很好。只需在文件“ init .py”中,编辑以下部分:

不要使用 os.environ.get

app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
app.config['MAIL_PASSWORD'] = 'yourpassword'
于 2019-02-06T13:15:51.627 回答