Flask Web开发2----邮箱

第6章开头有这样一句话:Flask-Mail连接到SMTP服务器,并把邮件交给这个服务器发送。 所以这一章的目标是写一个程序,让QQ邮箱或者其他邮箱帮我们发送一封邮件到其他邮箱。

书里举例的是Gmail例子,但由于不可抗拒原因,现状况用QQ或者163做测试较好。

1.
QQ邮箱配置:

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
#MAIL_USERNAME填写QQ邮箱地址,相当于发件人邮箱地址
app.config['MAIL_USERNAME'] = '150xxxx8355@qq.com'
#MAIL_PASSWORD不是邮箱登录密码,而是授权码,获取授权码方式在下面
app.config['MAIL_PASSWORD'] = '9527xxxx232'

授权码设置:
进入邮箱账户找到POP3/IMAP/SMTP设置页面,开启POP3和SMTP服务及IMAP/SMTP服务。
之后点击箭头所指生成授权码,按照弹出提示操作即可,将获取到的授权码填写到MAIL_PASSWORD字段。
smtp
发送程序:

#sender:发件人地址,和MAIL_USERNAME字段填写的邮箱一致
#recipients:收件人地址,可以填写多个
msg = Message('test subject', sender='150xxxx8355@qq.com', recipients=['alex@qq.com', 'rion@163.com'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
with app.app_context():
    mail.send(msg)

如果控制台没有打印错误信息,说明发送成功,可以在收件人邮箱查看刚才发送的邮件。

2.
163邮箱配置和QQ邮箱一致:

app.config['MAIL_SERVER'] = 'smtp.163.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = '147xxxx8623@163.com'
app.config['MAIL_PASSWORD'] = '1994xxxx418'

用163给QQ邮箱发测试邮件,可能会不成功,会提示这样的错误:
mail_send_error
错误码提示是554,网易对此错误码的解释是:
•554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;

出现这样的错误,代码本身是没有问题的,测试邮件因为简陋被163给过滤掉了。
其他错误码可以见此链接:
http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

参考链接:
https://segmentfault.com/q/1010000005643494
https://www.zhihu.com/question/50008398/answer/158605536
http://www.jianshu.com/p/ab0f062da743

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值