目录

安装Flask-Mail

配置Flask-Mail

使用Flask-Mail


上篇文章我们学习了Flask框架——Flask-WTF表单:文件上传、验证码,这篇文章我们学习Flask框架——Flask-Mail邮件。

Web应用程序经常需要向用户、客户端、管理员、运维人员等相关人员发送邮件。在Flask框架中提供了Flask-Mail邮件库来管理电子邮件的收发。

安装Flask-Mail

执行如下代码安装Flask-Mail:

pip install flask-mail

安装后,可以执行如下代码查看Flask-Mail的信息:

pip show flask-mail

信息如下所示:

Name: Flask-Mail
Version: 0.9.1
Summary: Flask extension for sending email
Home-page: https://github.com/rduplain/flask-mail
Author: Dan Jacob
Author-email: danjac354@gmail.com
License: BSD
Location: c:\users\lin\desktop\flask-mail邮件\venv\lib\site-packages
Requires: blinker, Flask
Required-by:

配置Flask-Mail

在使用Flask-Mail之前,需要进行配置。

创建Flask项目,其代码如下所示:

from flask import Flask
from flask_mail import Mail
app =Flask(__name__)app.config['MAIL_SERVER']='smtp.qq.com'   #邮件服务器的名称/IP地址
app.config['MAIL_PORT'] = 465       #所用服务器的端口号
app.config['MAIL_USERNAME'] = 'yourmail@qq.com'  #发件人的用户名
app.config['MAIL_PASSWORD'] = '*******'   #发件人的POP3/IMAP/SMTP服务的SSL连接客户端授权码
app.config['MAIL_USE_TLS'] = False    #禁用传输安全层加密
app.config['MAIL_USE_SSL'] = True    #启用安全套接字层加密
mail = Mail(app)        #创建邮件类对象if __name__ == '__main__':app.run(debug = True)

这里我们是使用QQ邮箱作为发件邮箱。

QQ邮箱相关服务器信息:

服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号
IMAP imap.qq.com 993 143
SMTP smtp.qq.com 465/587 25
POP3 pop.qq.com 995 110

SSL连接客户端授权码可以按如下图获取:

下拉,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开启POP3、IMAP/SMTP服务,发送短信,

发送短信就会获取到客户端授权码了。

除了刚才我们在Flask程序中配置的参数,还可以添加以下参数:

  • MAIL_DEBUG:支持自定义调试,默认是Flask应用程序的调试状态;

  • MAIL_DEFAULT_SENDER:设置默认发件人;

  • MAIL_MAX_EMAILS:设置要发送的最大邮件;

  • MAIL_SUPPRESS_SEND: 如果app.testing设置为true,则发送被抑制;

  • MAIL_ASCII_ATTACHMENTS: 如果设置为true,则将附加的文件名转换为ASCII。

使用Flask-Mail

这里我们通过网页的形式来发送邮件。

在上面的Flask程序中,我们编写视图函数,如下所示:

@app.route('/write')
def write_mail():return render_template('write.html')

这里我们首先创建一个write_mail视图函数,其作用是渲染write.html模板文件,write.html文件,代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="{{ url_for('send_mail') }}" method="post"><p>收件人是:<input type="text" name="username"></p><p>邮箱主题为:<input type="text" name="theme"></p><p>邮箱内容为:<input type="text" name="content"></p><p><input type="submit" value="发送"></p></form>
</body>
</html>

这里我们使用了url_for()方法调用视图函数send_mail(),当点击发送时,就会调用send_mail()视图函数,并把文本中输入的数据传递到请求中。

send_mail视图函数代码如下所示:

@app.route('/send' ,methods=['GET','POST'])
def send_mail():username=request.form.get('username')  #获取请求中的username参数theme=request.form.get('theme')    #获取请求中的theme参数content=request.form.get('content')   #获取请求中的contentmsg = Message(theme, sender='1308454615@qq.com', recipients=[username],body=content)  #使用Messgae方法mail.send(msg)    #使用Mail类中的send()方法return '邮件发送成功'

获取请求中的参数,再使用Message()实例封装邮件,其语法结构为:

其中:第一个参数为邮件主题,第二个sender参数为发件人,第三个recipients参数为收件人,其参数值为一个列表,所以可以同时传入多个收件人,第四个参数为邮件内容。

最后使用Mail类中的send()方法发送邮件,

在Mail类中有以下方法:

方法 描述
send() 发送Message类对象的内容
connect() 与邮件主机打开连接
send_message() 发送消息对象

好了,代码已经写好了,启动Flask程序,访问http://127.0.0.1:5000/write,正确输入内容,如下图所示:

点击发送后,就会跳转到http://127.0.0.1:5000/send网页中,如下图所示:

好了,关于Flask框架——Flask-Mail邮件就学到这里,感谢观看,下篇文章我们继续学习Flask框架——Flask-SQLite数据库。

公众号:白巧克力LIN

该公众号发布Python、数据库、Linux、Flask、自动化测试、Git等相关文章!

- END -

Flask框架——Flask-Mail邮件相关推荐

  1. Flask框架(flask中的蓝图Blueprint)

    1. 我们学习Flask框架,开始的时候是把所有的视图函数等都写在一个文件中 我们在这单个文件中可以定义路由.视图函数.定义模型等等. 但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程 ...

  2. Flask框架(flask中的数据库SQLAlchemy(python3),配置、模型类、创建表)

    1.  SQLAlchemy是一个关系型数据库框架, 它提供了高层的ORM和底层的原生数据库的操作. flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展. 2. 安装 ...

  3. Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)

    模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染:  render_template("模板名字",键=值,键=值)       ...

  4. Flask框架(flask中的请求上下文和应用上下文,以及请求钩子的使用,Flask-Script 扩展命令行)

    1.请求上下文与应用上下文 请求上下文(request context) request和session都属于请求上下文对象. 应用上下文(application context) current_a ...

  5. Flask框架(flask中设置和获取session)

    1. session 数据是保存到后端的数据库中 2.session中的从狭义和广义上分:   (1)session,广义上 :          是一种机制:在前端当中存一个session_id , ...

  6. Flask框架(flask中对cookie的处理(设置cookie、获取cookie、删除cookie))

    在Flask中对cookie的处理 1. 设置cookie: 设置cookie,默认有效期是临时cookie,浏览器关闭就失效 可以通过 max_age 设置有效期, 单位是秒 resp = make ...

  7. Flask框架(flask中设置响应信息的方法,返回json数据的方法)

    设置响应信息的方法 1.  返回自定义的响应头,有两种方式: (1)  第一种是:视图函数return的时候,使用元组,返回自定义的信息           返回的时候的状态码可以自定义信息:&quo ...

  8. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  9. Flask框架(flask中的邮件发送Flask-Mail(邮件扩展))

    1.  Flask的扩展包Flask-Mail通过包装了Python内置的smtplib包, 可以用在Flask程序中发送邮件. Flask-Mail连接到简单邮件协议(Simple Mail Tra ...

  10. Flask框架—flask中的session

    Flask中的session session设置 Flask除请求对象之外,还有一个 session 对象. 它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 C ...

最新文章

  1. 神经网络其实和人一样懒惰,喜欢走捷径......
  2. Linux 上与系统负载有关的命令
  3. POJ 2449 Remmarguts' Date(k短路模板)
  4. 聚类分析与相关算法(Kmeans等)详解
  5. ubuntu经常提示:检测到系统程序出现问题
  6. CPU 被挖矿,Redis 竟是内鬼!
  7. arraylist下标从几开始_剖析JAVA面试题 手写ArrayList的实现,在笔试中过关斩将?...
  8. Numpy:ndim、shape、dtype、astype用法介绍
  9. 得力人脸识别考勤机密码设置_人脸指纹混合识别考勤机得力怎么使用
  10. XSS跨站之原理分类及攻击手法
  11. 高通平台Android源码bootloader分析之sbl1(二)
  12. 园区内智慧出行标准化白皮书(2022年)
  13. JSP WebSehll 后门脚本
  14. 我用什么工具写公众号
  15. 笔记本计算机风扇声音大怎么办,笔记本电脑噪音大怎么办 全解决方法
  16. 电子科技大学计算机多久分流,【启梦成电】牛晓滨:纳米世界里的“数学家”...
  17. Unity3d TextMeshPro教程
  18. python 用tkinter 做一个简易番茄钟
  19. 衡水中学计算机老师,衡水中学资深老师:电脑阅卷本就是一种淘汰机制,学生都不以为然...
  20. LCD液晶显示屏常见类型和接口

热门文章

  1. 线性代数学习笔记10-2:特征值分解EVD/奇异值分解SVD的几何意义
  2. div通过position:fixed或者absolute固定位置后,a或者onclick失效问题解决
  3. Android入门教程(二)
  4. 2023年全国最新二级建造师精选真题及答案42
  5. wpf 资源字典中定义FontFamily
  6. 纪录片如何配音?你应该掌握这几种配音方法
  7. 代数余子式之和怎么算_代数Artin(一): 矩阵
  8. mapserv服务+gdal程序请求WCS服务
  9. 还在用space键输入空格吗?快来使用转义符吧
  10. console线与电脑连接