pip install flask-mail
配置发邮件的相关信息
import os# ...app.config['MAIL_SERVER'] = 'smtp.googlemail.com'app.config['MAIL_PORT'] = 587app.config['MAIL_USE_TLS'] = Trueapp.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
编写发送邮件的函数,并且这里可以使用render_template渲染html。
from flask_mail import Messageapp.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <flasky@example.com>'def send_email(to, subject, template, **kwargs):msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject,sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])msg.body = render_template(template + '.txt', **kwargs)msg.html = render_template(template + '.html', **kwargs)mail.send(msg)
编写异步发送邮件的函数
from threading import Threaddef send_async_email(app, msg):with app.app_context():mail.send(msg)def send_email(to, subject, template, **kwargs):msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject,sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])msg.body = render_template(template + '.txt', **kwargs)msg.html = render_template(template + '.html', **kwargs)thr = Thread(target=send_async_email, args=[app, msg])thr.start()return thr
