《Flask development》flask电子邮件

使用Flask-Mail插件提供电子邮件支持

插件包装了python标准库中的smtplib包

  • 安装
(venv) $ pip install flask-mail
  • 设置SMTP服务器的配置
#qq邮箱示例
import os
# ...
app.config['MAIL_SERVER'] = 'smtp.qq.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.environ.get('MAIL_PASSWORD')

这里我不推荐gmail,因为在墙外,使用过程会由各种小问题。
推荐微软outlook,次之qq,163。
常用:

  1. outlook
    服务器名称: smtp-mail.outlook.com
    端口: 587
  2. qq
    服务器名称:smtp.qq.com
    端口: 465或587
  3. 163
    服务器名称: smtp.163.com
    端口: 465或587

  • 初始化:
from flask.ext.mail import Mail
mail = Mail(app)
#设定环境变量
(venv) $ set MAIL_USERNAME=<username>
(venv) $ set MAIL_PASSWORD=<password>

在程序中集成发送电子邮件功能:

定义一个函数,避免每次都手动编写电子邮件消息。可以使用 Jinja2 模板渲染邮件正文,灵活性极高。

from flask.ext.mail import Message

app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <flasky@example.com>'

def send_email(to, subject, template, **kwargs):
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject, sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
mail.send(msg)

send_email 函数的参数分别为收件人地址、主题、渲染邮件正文的模板和关键字参数列表。指定模板时不能包含扩展名,这样才能使用两个模板分别渲染纯文本正文和富文本正文。调用者将关键字参数传给 render_template() 函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值