Flask-Mail 简介
就实际的邮件发送而言,Flask 有一个名为 Flask-Mail 的流行插件,可以使任务变得非常简单。 和往常一样,该插件是用 pip 安装的:
(venv) $ pip install flask-mail
密码重置链接将包含有一个安全令牌。 为了生成这些令牌,我将使用 JSON Web Tokens ,它也有一个流行的 Python 包:
(venv) $ pip install pyjwt
Flask-Mail 插件是通过 app.config
对象来配置的。还记得在 第七章 中,我添加了用于在生产环境中发生错误时发送电子邮件的配置项? 当时我没有告诉你,不过,我选择的配置变量都是 Flask-Mail 的需求的,所以不需要任何额外的工作,配置的活已经完工。
像大多数 Flask 插件一样,你需要在 Flask 应用创建之后创建一个邮件实例。 本处, mail
是类 Mail
的一个实例:
# ...
from flask_mail import Mail
app = Flask(__name__)
# ...
mail = Mail(app)
第七章 中我提到过,测试发送电子邮件的方式有两种。 如果你想使用一个模拟的电子邮件服务器,Python 提供了一个非常好用的方法,你可以使用下面的命令在第二个终端中启动它:
(venv) $ python -m smtpd -n -c DebuggingServer localhost:8025
要配置此服务器,需要设置两个环境变量:
(venv) $ export MAIL_SERVER=localhost
(venv) $ export MAIL_PORT=8025
如果你希望真实地发送电子邮件,则需要使用真实的电子邮件服务器。 那么你只需要为它设置 MAIL_SERVER
、 MAIL_PORT
、 MAIL_USE_TLS
、 MAIL_USERNAME
和 MAIL_PASSWORD
环境变量。 如果你想要快速解决方案,可以使用 Gmail 帐户发送电子邮件,并使用以下设置:
(venv) $ export MAIL_SERVER=smtp.googlemail.com
(venv) $ export MAIL_PORT=587
(venv) $ export MAIL_USE_TLS=1
(venv) $ export MAIL_USERNAME=<your-gmail-username>
(venv) $ export MAIL_PASSWORD=<your-gmail-password>
如果你使用的是 Microsoft Windows,则需要在上面的每个 export
语句中将 export
替换为 set
。
Gmail 帐户中的安全功能可能会阻止应用通过它发送电子邮件,除非你明确允许“安全性较低的应用程序”访问你的 Gmail 帐户。 可以阅读 此处 来了解具体情况,如果你担心帐户的安全性,可以创建一个辅助邮箱帐户,配置它来仅用于测试电子邮件功能,或者你可以暂时启用允许不太安全的应用程序来运行此测试,完成后恢复为默认值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论