在WEB开发时,咱们经常会使用到发送邮件的功能,注册时或者更换密码时,须要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能html
flask-mail发送邮件须要你提供你的邮箱帐号和密码。某些配置是发送邮箱所必须的·。大部分flask初学者通常没有云主机和域名来搭建邮箱服务器,因此咱们只能使用qq等邮件服务商给你的邮箱
这里介绍了如何配置邮箱的config
开发在mail文件夹中python
#/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等邮箱发不出去也是由于其有本身的设置。flask
实现咱们须要一个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'
在当前文件夹使用pythonmarkdown
>>from app import SendMail
>>SendMail()
邮件就会成功发出去啦多线程
在具体实践中,发送邮箱会被抽象成一个函数,msg的body和html形式通常会使用flask的render_tempalte来渲染
发送大量邮件时,QQ、126邮箱服务器颇有可能认为你在发送垃圾邮件所以发不出去。
生产环境时应当使用本身搭的邮箱服务器,或者邮箱服务商提供的企业邮箱app
flask-login中文文档 http://www.pythondoc.com/flask-mail/异步