Flask-Mail

2018-10-16  本文已影响27人  SingleDiego

参考:https://blog.csdn.net/wbin233/article/details/73222027




安装 Flask-Mail

pip install Flask-Mail




配置 Flask-Mail

配置项 默认值 功能
MAIL_SERVER localhost 邮箱服务器
MAIL_PORT 25 端口
MAIL_USE_TLS False 是否使用TLS
MAIL_USE_SSL False 是否使用SSL
MAIL_DEBUG app.debug 是否为DEBUG模式,打印调试消息
MAIL_SUPPRESS_SEND app.testing 设置是否真的发送邮件,True不发送
MAIL_USERNAME None 用户名,填邮箱
MAIL_PASSWORD None 密码,填授权码
MAIL_DEFAULT_SENDER None 默认发送者,填邮箱
MAIL_MAX_EMAILS None 一次连接中的发送邮件的上限
MAIL_ASCII_ATTACHMENTS False 如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。一般用于添加附件。




邮件操作

邮件是通过一个 Mail 实例进行管理。

from flask import Flask
from flask_mail import Mail

app = Flask(__name__)
# ...
app.config['MAIL_SERVER'] = 'smtp.qq.com' # 以QQ邮箱为例
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USERNAME'] = 'XXX@qq.com'
app.config['MAIL_PASSWORD'] = '填授权码'
# ...
mail = Mail(app)

在这个例子中所有的邮件将会使用传入到 Mail 实例中的配置项进行发送。

创建发送邮件的内容
from flask_mail import Message

msg = Message(
    subject="Hello World!", # 邮件标题
    body="test!", # 正文内容
    sender="xxx@qq.com", # 发送者
    recipients=["xxx@126.com"] # 收件人
    )

sender 为发送方,如果你设置了 MAIL_DEFAULT_SENDER,就不必再次填写发件人,默认情况下将会使用配置项的发件人。

recipients 为接收方,可以设置一个或者多个收件人,也可以后续再添加,例如:

msg.recipients = ["xxx@qq.com"]
msg.add_recipient("xxxx@qq.com") # 新增收件人

sender 也可以是一个二元组,它将会被分成姓名和邮件地址:

sender=("Me", "me@example.com")

邮件内容可以包含主体以及/或者 HTML:

msg.body = "testing"
msg.html = "<b>testing</b>"

最后,发送邮件的时候请使用 Flask 应用设置的 Mail 实例:

mail.send(msg)

这里是一个完整例子:

from flask import Flask
from flask_mail import Mail

app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USERNAME'] = 'xxxxxx@qq.com' 
app.config['MAIL_PASSWORD'] = '**********' # 授权码


mail = Mail(app)


from flask_mail import Message
msg = Message(
    subject="Hello World!",
    body="test!",
    sender="xxxxx@qq.com",
    recipients=["xxxxxx@126.com"]
    )


@app.route('/')
def hello_world():
    mail.send(msg)
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

当我们打开 http://127.0.0.1:5000/ 时候,邮件就会发送。

上一篇下一篇

猜你喜欢

热点阅读