首页 > 编程 > Python > 正文

在Python的Flask框架下收发电子邮件的教程

2020-02-23 00:49:12
字体:
来源:转载
供稿:网友

 简述

在大多数此类教程中都会不遗余力的介绍如何使用数据库。今天我们对数据库暂且不表,而是来关注另一个在web应用中很重要的特性:如何推送邮件给用户。

在某个轻量级应用中我们可能会添加一个如下的邮件服务功能:当用户有了新的粉丝后,我们发送一封邮件通知用户。有很多方法可以实现这个特性,而我们希望提供出一种可复用的通用框架来处理。
 
Flask-Mail介绍

对于我们来说是幸运的,现在已经有很多外部插件来处理邮件,虽说不能百分百按照我们的想法去处理,但已经相当接近了。 

在虚拟环境中安装 Flask-Mail是相当简单的。Windows以外的用户可以利用以下命令来安装:
 

flask/bin/pip install flask-mail

Windows用户的安装稍有不同,因为Flask-Mail所使用的一些模块不能再Windows系统上运行,你可以使用以下命令: 
 

flask/Scripts/pip install --no-deps lamson chardet flask-mail

配置:

回想一下前文中单元测试部分的案例,我们通过添加配置支持了一个这样的功能:当应用的某个版本测试出错时可以邮件通知我们。从这个例子就可以看出如何配置使用邮件支持。

再次提醒大家,我们需要设置两个方面的内容:

    邮件服务器信息     用户邮箱地址

如下正是前文中所用到的配置

 

# email serverMAIL_SERVER = 'your.mailserver.com'MAIL_PORT = 25MAIL_USE_TLS = FalseMAIL_USE_SSL = FalseMAIL_USERNAME = 'you'MAIL_PASSWORD = 'your-password' # administrator listADMINS = ['you@example.com']

其中并没有设置切实可用的邮件服务器和邮箱。现在我们通过一个例子来看如何使用gmail邮箱账户来发送邮件:

 

# email serverMAIL_SERVER = 'smtp.googlemail.com'MAIL_PORT = 465MAIL_USE_TLS = FalseMAIL_USE_SSL = TrueMAIL_USERNAME = 'your-gmail-username'MAIL_PASSWORD = 'your-gmail-password' # administrator listADMINS = ['your-gmail-username@gmail.com']

另外我们也可以初始化一个Mail对象来连接SMTP邮件服务器,发送邮件:
 

from flask.ext.mail import Mailmail = Mail(app)


发个邮件试试!

为了了解flask-mail如何工作的,我们可以从命令行发一封邮件看看。进入python shell并执行如下的脚本:
 

>>> from flask.ext.mail import Message>>> from app import mail>>> from config import ADMINS>>> msg = Message('test subject', sender = ADMINS[0], recipients = ADMINS)>>> msg.body = 'text body'>>> msg.html = '<b>HTML</b> body'>>> mail.send(msg)            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表