专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
51好读  ›  专栏  ›  Python开发者

Flask 插件系列 - Flask-Mail

Python开发者  · 公众号  · Python  · 2017-02-01 20:15

正文

请到「今天看啥」查看全文


( '/' )

def index () :

msg = Message ( 'Hi' , sender = '[email protected]' , recipients = [ '[email protected]' ])

msg . html = ' Hello Web '

# msg.body = 'The first email!'

mail . send ( msg )

return '

OK!

'

if __name__ == '__main__' :

app . run ( host = '127.0.0.1' , debug = True )


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


$ export MAIL_USERNAME = '[email protected]'

$ export MAIL_PASSWORD = '123456'


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


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


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

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

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

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

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


Flask-Mail 配置项


Flask-Mail 使用标准的 Flask 配置 API 进行配置,下面是一些常用的配置项:



异步发送邮件


使用上面的方式发送邮件,会发现页面卡顿了几秒才出现消息,这是因为我们使用了同步的方式。为了避免发送邮件过程中出现的延迟,我们把发送邮件的任务移到后台线程中,代码如下:


# -*- coding: utf-8 -*-

from flask import Flask

from flask_mail import Mail , Message

from threading import Thread

import os

app = Flask ( __name__ )

app . config [ 'MAIL_SERVER' ] = 'smtp.qq.com'

app . config [ 'MAIL_PORT' ] = 25

app . config [ 'MAIL_USE_TLS' ] = True







请到「今天看啥」查看全文