使用Flask-Mail扩展发送邮件

来源:互联网 发布:淘宝部分店铺无法使用 编辑:程序博客网 时间:2024/05/01 00:53

1、安装 Flask-Mail

pip install Flask-Mail

2、发送邮件

# -*- coding: utf-8 -*-#****************************************************************# sendmail.py# Author     : sisiair# Version    : 0.1.0# Date       : 2017-2-22# Description: 使用Flask-mail扩展发送邮件功能#****************************************************************from flask import Flaskfrom flask_mail import Mail, Messageimport osimport randomfrom threading import Threadapp = Flask(__name__)app.config['MAIL_SERVER'] = 'smtp.qq.com'  # 邮件服务器地址app.config['MAIL_PORT'] = 25               # 邮件服务器端口app.config['MAIL_USE_TLS'] = True          # 启用 TLSapp.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME') or 'sender@example.com'app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD') or '123456'mail = Mail(app)@app.route('/')def index():    msg = Message('邮件标题', sender='sender@example.com', recipients=['receiver@example.com'])    msg.body = '这是一封测试邮件!'    name = "result.html"    with app.open_resource(name) as fp:        msg.attach(name, "html/html", fp.read())   #发送html附件        #msg.html = fp.read()   #邮件直接展示html结果    mail.send(msg)    return ('<h1>send successfully %d!</h1>' % random.randint(0,99))def send_async_email(app, msg):    with app.app_context():        mail.send(msg)@app.route('/sync')def send_email():    msg = Message('邮件标题', sender='sender@example.com', recipients=['receiver@example.com'])    msg.body = '这是一封测试邮件,异步发送!'    name = "result.html"    with app.open_resource(name) as fp:        msg.attach(name, "html/html", fp.read())   #发送附件        #msg.html = fp.read()   #邮件直接展示html结果    #mail.send(msg)        #异步发送    thr = Thread(target=send_async_email, args=[app, msg])    thr.start()    return ('<h1>send successfully %d!</h1>' % random.randint(0,99))if __name__ == '__main__':    app.run(host='127.0.0.1', debug=True)

在发送前,需要先设置用户名和密码,当然你也可以直接写在文件里,如果是从环境变量读取,可以这么做:

$ export MAIL_USERNAME='sender@example.com'$ export MAIL_PASSWORD='123456'

将上面的 sender 和 recipients 改一下,就可以进行测试了。

从上面的代码,我们可以知道,使用 Flask-Mail 发送邮件主要有以下几个步骤:

  • 配置 app 对象的邮件服务器地址,端口,用户名和密码等

  • 创建一个 Mail 的实例:mail = Mail(app)

  • 创建一个 Message 消息实例,有三个参数:邮件标题、发送者和接收者

  • 创建邮件内容,如果是 HTML 格式,则使用 msg.html,如果是纯文本格式,则使用 msg.body

  • 最后调用 mail.send(msg) 发送消息


0 0
原创粉丝点击