使用Flask-Mail发送邮件
2017-02-07 01:48
429 查看
简介
在WEB开发时,我们常常会使用到发送邮件的功能,注册时或者更换密码时,需要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能配置
flask-mail发送邮件需要你提供你的邮箱账号和密码。某些配置是发送邮箱所必须的·。大部分flask初学者一般没有云主机和域名来搭建邮箱服务器,所以我们只能使用qq等邮件服务商给你的邮箱这里介绍了如何配置邮箱的config
开发在mail文件夹中
#/app/config MAIL_SERVER = 'smtp.qq.com' MAIL_PORT = 465 MAIL_USE_TLS = False MAIL_USE_SSL = True # 注意此处,很多人配置发不出去和这个是有关系的 MAIL_PASSWORD = '**********' MAIL_USERNAME = '********@qq.com'
此处以qq邮箱为例子,我们填入了qq邮箱的服务器地址,他的邮箱服务的端口,TLS,SSL的选择–这是很多人发不出去邮件的关键之一,账号和密码–发不出去邮箱的另一个关键!
QQ邮箱是使用SSL的,然后注意QQ邮箱此处的密码不是你的qq密码!!
不是你的QQ密码!!
。。我在这个坑陷了很久~~很久 ~~很久·
这个密码你登陆qq邮箱,选择设置,然后点击账号
邮箱的密码就是此处的授权码填入后的给你的密码。
126等邮箱发不出去也是因为其有自己的设置。
功能实现
实现我们需要一个app实例#/usr/bin/env python # mail/app.py from flask import Flask from flask_mail import Mail, Message from threading import Thread app = Flask(__name__) mail = Mail(app) def send_async_email(app,msg): with app.app_context(): mail.send() def SendMail(): msg = Message('test',sender='***@qq.com',\ recipients=["***@example.com"]) #recipients是个列表,包含所有收件人 #此处的test是邮箱的主题,sender和config中的MAIL_USERNAME要一致哦 msg.body = 'testbody' msg.html = '<b>test</b>body' #邮件发送给目标,可以有文本,两种方式呈现,你能看见怎样的取决于你的客户端 thr = Thread(target=send_async_email,args=[app,msg]) #使用多线程,在实际开发中,若是不使用异步、多线程等方式,网页会卡住 thr.start() return 'ok'
在当前文件夹使用python
>>from app import SendMail >>SendMail()
邮件就会成功发出去啦
补充
在具体实践中,发送邮箱会被抽象成一个函数,msg的body和html形式一般会使用flask的render_tempalte来渲染发送大量邮件时,QQ、126邮箱服务器很有可能认为你在发送垃圾邮件因此发不出去。
生产环境时应当使用自己搭的邮箱服务器,或者邮箱服务商提供的企业邮箱
参考
flask-login中文文档 http://www.pythondoc.com/flask-mail/相关文章推荐
- Flask项目:使用Flask-Mail + uwsgi的邮件发送
- 使用Flask-Mail扩展发送邮件
- 刷爆你朋友的邮箱! 使用Celery+Flask_mail进行定时邮件发送!
- 使用Python Flask-mail发送邮件
- Flask-Mail使用163邮箱异步发送邮件
- 使用Flask-Mail发送邮件
- 使用Flask-Mail和qq邮箱SMTP服务发送邮件
- 使用 flask-mail 扩展发送邮件
- 使用Flask-Mail发送QQ邮件
- flask:使用flask-mail客户端访问触发发送邮件
- 使用system.web.mail.SMTPmail发送邮件,处理smtp验证问题
- .NET 1.1 下不使用 System.Web.Mail.SmtpMail 发送邮件的其它选择
- .net 1.1 下不使用 system.web.mail.smtpmail 发送邮件的其它选择_asp.net技巧
- 使用System.Net.Mail发送邮件
- 使用spring邮件抽象层发送E-mail
- 使用.net的SmtpMail发送邮件及本机SMTP的简单配置
- 使用System.Net.Mail发送邮件,vs2005与vs2008存在差别?
- [翻译]开源发送邮件组件dotnetopenmail使用介绍
- 使用org.apache.commons.mail发送邮件
- 使用System.Net.Mail.SmtpClient发送邮件时出现的乱码问题