很多类型的应用程序都需要在特定事件发生时提醒用户,而常用的通信方法就是电子邮件。虽然Python标准库中的smtplib包可用在Flask程序中发送电子邮件,但包装了smtplib的Flask-Mail扩展能更好地和Flask集成。
使用Flask-Mail提供电子邮件支持
使用pip 安装 Flask-Mail:pip install flask-mail
Flask-Mail连接到简单邮件传输协议(SMTP)服务器,并且把邮件交给这个服务器发送。如果不进行配置,Flask-Mail会连接localhost上的端口25,无需验证即可发送电子邮件。下表列出了可用来设置SMTP服务器的配置。
配置 | 默认值 | 说明 |
MAIL_PORT | 25 | 电子邮件服务器的端口 |
MAIL_USE_TLS | False | 启用传输层安全协议 |
MAIL_USE_SSL | False | 启用安全套接层协议 |
MAIL_USERNAME | None | 邮件账户用户名 |
MAIL_PASSWORD | None | 邮件账户密码 |
MAIl_SERVER | localhost | 电子邮件服务器的主机名或IP地址 |
import os
#...
app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get(‘MAIL_USERNAME’)
app.config['MAIL_PASSWORD'] = os.envion.get('MAIL_PASSWORD')
示例 hello.py:初始化 Flask-Mail
from flask_mail import Mail
mail = Mail(app)
保存电子邮件服务器用户名和密码的两个环境变量要在环境中定义。也可以自己直接在程序中添加字符串。
注意,Flask-Mail的send()函数使用current_app,因此要在激活的程序上下文中执行:
with app.app_context():
mail.send(mymessage)
后续的部分,当用到之后再在博客中补充。