Flask-mail 配置及使用说明

本文介绍了如何在Flask应用中使用Flask-mail模块发送邮件,包括安装配置、初始化、SMTP邮箱服务器设置(以qq企业邮箱为例)以及发送邮件的接口函数。通过实例化Message对象和使用send_email方法,实现登录验证等场景的邮件发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask-mail 邮件发送模块

说明:当需要对用户进行登录时的邮箱验证时,我们可以通过 Flask-mail 来实现该需求。

1. 安装配置

pip install Flask-Mail

2. flask-mail,载入和初始化

from flask_mail import Mail
mail = Mail()

3. flask-mail SMTP邮箱服务器配置

配置默认值说明
MAIL_SERVERlocalhost电子邮箱服务器的主机名和IP地址
MAIL_PORT25电子邮箱服务的端口
MAIL_USE_SSLFalse启用传输层 TSL 协议
MAIL_USERNAMENone邮件账户用户名
MAIL_PASSWORDNone邮件账户的密码
FLASKY_MAIL_SENDERNone设置成与 MAIL_USERNAME 相同的值
(自定义添加的参数)

配置qq企业邮箱服务器:

MAIL_SERVER = 'smtp.qq.com',
MAIL_PROT = 465,
MAIL_USE_TLS = True,
MAIL_USE_SSL = False,
MAIL_USERNAME = os.environ.get('MAIL_USERNAME'),
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')

4.发送邮箱的接口函数

def send_email(self, register_user):
    """
    	Method for sending the registration Email to the user
    """
    msg = Message()
    msg.subject = self.email_subject
    url = url_for(
        ".activation",
        _external=True,
        activation_hash=register_user.registration_hash,
    )
    msg.html = self.render_template(
        self.email_template,
        url=url,
        username=register_user.username,
        first_name=register_user.first_name,
        last_name=register_user.last_name,
    )
    msg.recipients = [register_user.email]
    # 获取当前 app 对象:
    app = current_app._get_current_object()
    # 增加一个 sender(发送者邮箱地址), 否则报错
    msg.sender = app.config.get('FLASKY_MAIL_SENDER')
    try:
        send_email(msg)
        except Exception as e:
            log.error("Send email exception: {0}".format(str(e)))
            return False
        return True

代码说明:

  • 实例化一个 Message 对象并对其参数进行填充
  • 调用 send_email 方法,该方法如下:
def send_email(msg):
    app = current_app._get_current_object()
    thr = Thread(target=send_async_email, args=[app, msg])
    thr.start()
    return thr

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)
  • 通过开启一个线程的方式来直接对结果进行返回,以达到与异步类似的效果。

参考文档:

Flask-email 发送邮件的配置

Flask-Mail

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值