从Flask-Mail发送邮件(SMTPSenderRefused 530)

时间:2015-01-29 07:46:55

标签: python email flask smtp flask-mail

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

错误的解决方法是什么?

4 个答案:

答案 0 :(得分:7)

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

Google SMTP settings

更改

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)

做以下两件事来解决:

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

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

不要使用os.environ.get

app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
app.config['MAIL_PASSWORD'] = 'yourpassword'

答案 3 :(得分:0)

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

该页面显示:

  

某些应用和设备使用的安全性较低的登录技术,这会使您的帐户更容易受到攻击。您可以关闭访问这些应用程序(我们建议),或者打开访问权限(如果有使用风险的话)。 Learn more