简介

在WEB开发时,我们常常会使用到发送邮件的功能,注册时或者更换密码时,需要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能

配置

flask-mail发送邮件需要你提供你的邮箱账号和密码。某些配置是发送邮箱所必须的·。大部分flask初学者一般没有云主机和域名来搭建邮箱服务器,所以我们只能使用qq等邮件服务商给你的邮箱
这里介绍了如何配置邮箱的config
开发在mail文件夹中

#/app/config
MAIL_SERVER = 'smtp.qq.com'
MAIL_PORT = 465
MAIL_USE_TLS = False
MAIL_USE_SSL = True
# 注意此处,很多人配置发不出去和这个是有关系的
MAIL_PASSWORD = '**********'
MAIL_USERNAME = '********@qq.com'

此处以qq邮箱为例子,我们填入了qq邮箱的服务器地址,他的邮箱服务的端口,TLS,SSL的选择–这是很多人发不出去邮件的关键之一,账号和密码–发不出去邮箱的另一个关键!
QQ邮箱是使用SSL的,然后注意QQ邮箱此处的密码不是你的qq密码!!
不是你的QQ密码!!
。。我在这个坑陷了很久~~很久 ~~很久·
这个密码你登陆qq邮箱,选择设置,然后点击账号


邮箱的密码就是此处的授权码填入后的给你的密码。
126等邮箱发不出去也是因为其有自己的设置。

功能实现

实现我们需要一个app实例

#/usr/bin/env python
# mail/app.py
from flask import Flask
from flask_mail import Mail, Message
from threading import Thread app = Flask(__name__)
mail = Mail(app) def send_async_email(app,msg):
with app.app_context():
mail.send() def SendMail():
msg = Message('test',sender='***@qq.com',\
recipients=["***@example.com"])
#recipients是个列表,包含所有收件人
#此处的test是邮箱的主题,sender和config中的MAIL_USERNAME要一致哦
msg.body = 'testbody'
msg.html = '<b>test</b>body'
#邮件发送给目标,可以有文本,两种方式呈现,你能看见怎样的取决于你的客户端
thr = Thread(target=send_async_email,args=[app,msg])
#使用多线程,在实际开发中,若是不使用异步、多线程等方式,网页会卡住
thr.start()
return 'ok'

在当前文件夹使用python

>>from app import SendMail
>>SendMail()

邮件就会成功发出去啦

补充

在具体实践中,发送邮箱会被抽象成一个函数,msg的body和html形式一般会使用flask的render_tempalte来渲染
发送大量邮件时,QQ、126邮箱服务器很有可能认为你在发送垃圾邮件因此发不出去。
生产环境时应当使用自己搭的邮箱服务器,或者邮箱服务商提供的企业邮箱

参考

flask-login中文文档 http://www.pythondoc.com/flask-mail/

最新文章

  1. Oracle中Merge into用法总结
  2. C#动态添加属性
  3. Laplacian matrix 从拉普拉斯矩阵到谱聚类
  4. ubuntu下安装pthread的manpages(man 手册) 在Ubuntu中查看STL帮助
  5. Visual C++ 打印编程技术-编程基础-映射模式
  6. Ngen生成Native代码实战及优缺点分析
  7. 《C和指针》章节后编程练习解答参考——第9章
  8. 【C/C++】BinarySearch
  9. 如何找出当前活动桌面背景图像的位置/路径(Ubuntu 18.04,GNOME)?
  10. java远程工具类
  11. vue实现复制粘贴的两种形式
  12. Qt的checkbox风格修改
  13. linux静态链接库与动态链接库详解
  14. poj 1159 最长回文
  15. Android源码目录分析【转】
  16. bind域名dns解析及主从服务的配置
  17. 快速构建大数据存储分析平台-ELK平台安装
  18. app 之间发送文件 ios
  19. UVA 12673 Erratic Expansion 奇怪的气球膨胀 (递推)
  20. 安卓自带下拉刷新SwipeRefreshLayout加入上拉刷新功能

热门文章

  1. 初始 vue
  2. redis基础及基本命令
  3. 关于django中的rest_framework的使用
  4. JAVA中的SimpleDateFormat yyyy和YYYY的区别
  5. PNG文件格式
  6. SQL笔试题:下面是学生表(student)的结构说明
  7. 职责链模式ChainOfResponsibility
  8. 企业实践 | 如何更好地使用 Apache Flink 解决数据计算问题?
  9. 【Flutter学习】基本组件之进度条(LinearProgressIndicator, CircularProgressIndicator)
  10. [CSP-S模拟测试]:斯诺(snow)(数学+前缀和+树状数组)