Flask发送邮件失败问题-smtplib.SMTPAuthenticationError

错误描述

在通过Flask-Mail模块发送邮件时,会生如下错误:

smtplib.SMTPAuthenticationError: (535, b’Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256’)


问题产生原因

我代码中是这样配置的:

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 25
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')

然后在命令行中调用:

>>> from hello import mail
>>> from flask_mail import Message
>>> msg = Message('test mail', sender='2781936169@qq.com', recipients=['2781936169@qq.com'])
>>> msg.html = "This is <b>HTML</b> body"
>>> with app.app_context():
...     mail.send(msg)

在环境变量中我已经设置了MAIL_USERNAMEMAIL_PASSWORD。查看错误提示似乎是说没有权限什么的,难道是必须启用SSL吗?我在配置中做了修改:

app.config['MAIL_USE_SSL'] = True
app.config['MAIL_PORT'] = 465

但是依然还是报错。没办法,百度之下发现网上的说法大多是“使用邮箱授权码”,但是我使用的就是授权码啊。
然后我看到有人说qq邮箱本身不支持,或者需要额外设置,换个邮箱就可以!
于是我使用163邮箱测试,环境变量以及代码部分也修改成163邮箱对应参数。果然,成功了!收件成功的气泡音,让我长出一口气~


注意

修改完环境变量后要重启控制台才能生效!我刚换了163邮箱,更改环境变量之后没有重启控制台,所以还是报错,差点郁闷死。重启之后完美解决!

总结

qq邮箱似乎不支持Flask-Mail,就算支持应该也需要很多设置,总之很麻烦。换163邮箱就可以了。其他邮箱我没试,不是很清楚。
希望能给到和我一样遇到此问题的小伙伴一点帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值