简介

在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/

使用Flask-Mail发送邮件的更多相关文章

  1. java mail(发送邮件--163邮箱)

    package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderIn ...

  2. Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件

    文章目录 1. Spring Boot 集成 Java Mail 2. 单元测试 3. 源代码 Spring 对 Java Mail 有很好的支持.因此,Spring Boot 也提供了自动配置的支持 ...

  3. 利用System.Net.Mail 发送邮件

    我这里只是试了一下发mail的功能,感觉.net自带的发mail是比较全的,还是直接上我的code 参数文章:System.Net.Mail 发送邮件 SMTP协议 using System; usi ...

  4. Android Java Mail与Apache Mail发送邮件对比

    原文链接: 一.邮件简介  一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等:  1.收件人:收件人的邮箱地址,例如xxx@xx.com  2.收件人姓名:大部分的邮件显示时都会显 ...

  5. linux下使用自带mail发送邮件

    linux下使用自带mail发送邮件 mailx工具说明: linux可以通过安装mailx工具,mailx是一个小型的邮件发送程序,一般可以通过该程序在linux系统上,进行监控linux系统状态并 ...

  6. .net System.Web.Mail发送邮件 (设置发件人 只显示用户名)

    http://blog.163.com/hao_2468/blog/static/130881568201141251642215/ .net System.Web.Mail发送邮件 2011-05- ...

  7. SpringBoot整合Mail发送邮件&发送模板邮件

    整合mail发送邮件,其实就是通过代码来操作发送邮件的步骤,编辑收件人.邮件内容.邮件附件等等.通过邮件可以拓展出短信验证码.消息通知等业务. 一.pom文件引入依赖 <dependency&g ...

  8. 使用Javax.mail 发送邮件

    使用Javax.mail 发送邮件 详细说明都在代码中: 引入依赖  <!--sun定义的一套接收.发送电子邮件的API-->    <dependency>      < ...

  9. flask 异步发送邮件

    异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应.因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环, ...

  10. javax.mail 发送邮件异常

    一.运行过程抛出异常 1.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/ ...

随机推荐

  1. layui table 中固定列的行高和table行高不一致

    解决方法:只需在done回调函数执行以下方法 done: function(res, curr, count){ $(".layui-table-main tr").each(fu ...

  2. 2018-8-10-win10-uwp-横向-AppBarButton

    title author date CreateTime categories win10 uwp 横向 AppBarButton lindexi 2018-08-10 19:16:50 +0800 ...

  3. MYSQL全文索引—CONTAINS语法

    我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search con ...

  4. 爬虫示例--requests-module

    reuqests_test .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { ...

  5. SSD算法的实现

    本文目的:介绍一个超赞的项目--用Keras来实现SSD算法. 本文目录: 0 前言 1 如何训练SSD模型 2 如何评估SSD模型 3 如何微调SSD模型 4 其他注意点 0 前言 我在学习完SSD ...

  6. Jquery中的offset()和position()深入剖析(元素定位)

    先看看这两个方法的定义. offset(): 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整形属性:top 和 left.此方法只对可见元素有效. position(): 获取匹配元素相对父 ...

  7. 适配器模式Adapter

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11401410.html 1. 定义将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接 ...

  8. MariaDB PHP语法

    MariaDB与各种编程语言和框架(如PHP,C#,JavaScript,Ruby on Rails,Django等)合作良好. PHP仍然是所有可用语言中最受欢迎的语言,因为它的简单性和历史足迹. ...

  9. [CSP-S模拟测试]:简单的区间(分治)

    题目描述 给定一个长度为$n$的序列$a$以及常数$k$,序列从$1$开始编号.记$$f(l,t)=\sum \limits_{i=l}^ra_i-\max \limits_{i=l}^r\{a_i\ ...

  10. undefined null测试

    测试浏览器:chrome 当有父元素的子元素未定义时undefined和null均为true,类型为undefined 当元素赋给null后undefined和null均为true,类型为object ...