Flask-Mail 扩展

2025年3月17日 | 阅读 7 分钟

考虑到 Flask 是一个微框架,它在为开发者提供便利方面存在局限性。尽管如此,Flask 还有许多扩展,如 Mail、WTF、SQLite、SQLAlchemy 等,它们为开发者提供了一些基本的功能。

在本教程的这一部分,我们将学习 Flask 中一个最常见的扩展,即 Flask-Mail。

Web 应用程序必须能够向用户发送电子邮件。Flask-Mail 扩展为开发者和邮件服务器提供了一个简单的接口,可以通过 Web 应用程序发送电子邮件。

为此,我们必须使用 pip 安装器安装 Flask-Mail 扩展。

pip install Flask-Mail

应用程序必须为以下参数配置 Flask-Mail。

序号参数描述
1MAIL_SERVER它代表电子邮件服务器的名称或 IP 地址。默认值为 localhost。
2MAIL_PORT它代表服务器的端口号。默认端口号是 25。
3MAIL_USE_TLS用于启用或禁用传输安全层描述。默认为 false。
4MAIL_USE_SSL用于启用或禁用安全套接层描述。默认值为 false。
5MAIL_DEBUG用于为邮件应用程序提供调试支持。默认值为 None。
6MAIL_USERNAME它代表发件人的用户名。默认值为 None。
7MAIL_PASSWORD它代表服务器电子邮件 ID 的密码。默认值为 None。
8MAIL_DEFAULT_SENDER用于为多个电子邮件设置默认发件人 ID。默认值为 None。
9MAIL_MAX_EMAILS用于设置要发送的最大电子邮件数量。默认值为 None。
10MAIL_SUPPRESS_SEND如果 app.testing 设置为 true,则会抑制邮件发送。
11MAIL_ASCII_ATTACHMENTS如果设置为 true,则附件文件名将被转换为 ASCII。默认为 False。

Flask-Mail 模块类

有几个类对于使用 Python Flask Web 应用程序发送电子邮件很重要。

Message 类

Message 类将电子邮件消息绑定到一个简单的 Message 类实例中,以便可以在该实例上调用 attach() 等重要方法。实例化 Message 类的语法如下所示。

以下是可以在 Message 类对象上调用的方法。

  • attach(filename, content_type, data, disposition): 此方法用于发送带附件的消息。此方法接受文件名、文件 MIME 类型、原始文件数据和内容处置。

  • add_recipient(): 用于将收件人添加到消息中。

Mail 类

Mail 类对象用于发送电子邮件。通过将应用程序对象传递给 Mail 类构造函数来实例化 Mail 类,如下所示。

Mail 类包含以下方法。

  • send(): 它将 message 对象内容发送给收件人。
  • connect(): 用于打开与邮件主机的连接。
  • send_message(): 用于发送 message 对象。

使用 Flask Web 应用程序发送电子邮件的过程

使用 Flask Web 应用程序发送电子邮件涉及以下步骤:

步骤 1: 使用 from-import 语句导入所需的模块,如 flask-mail、flask。

步骤 2: 配置 Flask Mail。

步骤 3: 实例化 Mail 类。

步骤 4: 在由某个 URL 规则映射的函数中,使用所需的属性实例化 Message 类。

示例

下面的示例包含一个 Python 脚本,其中我们将电子邮件发送到给定的电子邮件 ID。

Mailer.py

我们的 Python Web 应用程序尝试登录脚本中指定的 email_id。如果您尚未允许访问您的 Google 帐户的低安全性应用程序,则此尝试可能会被阻止。在这种情况下,请访问链接 https://www.google.com/settings/security/lesssecureapps 并允许低安全性应用程序访问。

使用 OTP 在 Flask 中进行电子邮件验证

在现代 Web 应用程序中,有时会使用程序随机生成的单次密码来验证电子邮件。在此示例中,我们将创建一个 Python 脚本,该脚本接受用户输入的电子邮件 ID,并发送一封包含自动(随机)生成的(4 位)一次性密码的电子邮件。

为了成功验证电子邮件 ID,用户需要输入发送到指定电子邮件的 otp。如果用户输入的 OTP 与随机生成的 OTP 匹配,则电子邮件 ID 将成功验证,并向用户显示成功消息,否则验证失败,并向用户显示失败消息。

在下面的示例中,Flask 脚本 Mailer.py 充当控制器,其函数 verify() 和 validate() 分别与 URL /verify 和 /validate 相关联。这些函数还会渲染 HTML 模板以接受用户的输入,并根据电子邮件验证显示结果。

Mailer.py

index.html

verify.html

以下模板会提示用户输入 email_id 和密码。Mailer.py 脚本将发送一封包含一次性密码的电子邮件到用户输入的电子邮件 ID。

Flask-Mail Extension

现在,系统会提示用户输入发送到指定电子邮件的 OTP。

Flask-Mail Extension

validate() 函数将用户输入的 OTP 与随机生成并发送给用户的电子邮件 ID 中的 OTP 进行匹配。在这种情况下,OTP 匹配;因此,用户将收到如下所示的成功消息。

Flask-Mail Extension

批量电子邮件

在上面的示例中,脚本仅向用户发送一封电子邮件进行验证。在 Web 应用程序中,有时我们需要在单个连接中发送多封电子邮件或批量电子邮件。

在这种情况下,我们可以使用 Python 的 with 语句,它会在发送完所有电子邮件后自动关闭连接对象。

示例

为邮件添加附件

Flask 允许我们发送带附件的邮件。为此,我们需要使用 Flask 类的 open_resource() 方法打开资源。然后,我们可以使用 Python 的 with 语句将资源添加到消息中。with 语句会在工作完成后自动关闭资源。

以下语法用于发送带附件的邮件。

发送带附件的邮件的 Flask 脚本如下所示。

mailer_attach.py


下一主题Flask SQLite





Youtube 关注我们的Youtube频道获取视频:立即加入

反馈


帮助他人,请分享

facebooktwitterpinterest

学习最新教程


准备


热门技术


B.Tech / MCA