正文
(
'/'
)
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