Flask Web 与使用电子邮件通信

Flask Web 与使用电子邮件通信

目前常用的注册方式有两种(除去使用第三方登录的),一种是手机号+短信认证,另一种是邮箱+邮件验证。其实,除了注册,其他的要与用户产生通信的方式也主要是这两种。今天,本篇就来谈谈邮件通信。

虽然python的标准库中提供了smtplib包可以用于发送电子邮件,但是在Flask项目中,可以使用集成度更好的Flask-Mail扩展。安装同样很简单,使用pip install flask-mail即可。

Flask Web 与使用电子邮件通信

先来简单介绍Flask-Mail的过程:它连接到SMTP(简单邮件传输协议)服务器,并把邮件交给这个服务器发送。如果不进行配置,它会默认连接localhost上的25端口,无可验证即可发送电子邮件。再次提醒,不要在代码中直接显示邮件的账户,密码,而是应该保存在系统的环境变量中。

在使用邮件时,为了避免每次都手动编写电子邮件信息,我们可以把通用的部分抽取出来定义成一个函数,这样做还有一个好处,就是可以使用Jinja2模板渲染邮件正文,灵活性很高。通常,邮件的主题和发件人地址就是可以用函数固定下来的,对于正文使用渲染。

Flask Web 与使用电子邮件通信

在使用邮件模板时,建议保存在templates文件夹的mail子文件夹下,以便和普通的模板区分开来。另外,多发几封邮件时,会发现卡顿情况,就像浏览器无响应一样,为了避免处理请求过程中不必要的延迟,我们可以把发送电子邮件的函数移到后台的线程中,实现异步发送电子邮件。

最后提一下,程序要发送给大量电子邮件时,使用专门发送电子邮件的作业(如celery任务队列)会比每封邮件都新建一个线程更合适。


分享到:


相關文章: