文章介绍如何用flask_mail发送QQ邮件,发送其它邮箱简单的更改相应配置即可

传送门:源代码

源代码地址:https://github.com/1417766861/flask_mail

首先展示一下效果:

发送普通文本邮件:

发送一个html模板的邮件:

发送一个附带附件的邮件:

看到结果,是否心动了呢?

1. 通过flask_mail  发送QQ邮件,这里使用到flask_mail插件使用:

进入自己虚拟环境:通过指令安装即可。

pip install flask_mail

2.初始化mail对象:

邮件是通过一个 Mail 实例进行管理:

from flask import Flask
from flask_mail import Mail app = Flask(__name__)
mail = Mail(app)

在这个例子中所有的邮件将会使用传入到 Mail 实例中的应用程序的配置项进行发送。

或者你也可以在应用程序配置的时候设置你的 Mail 实例,通过使用 init_app 方法:

mail = Mail()

app = Flask(__name__)
mail.init_app(app)

3.flask_mail的配置:

进入QQ邮箱,进入账户,开启相关服务

qq发送服务器地址:

4.填写config文件的  相关配置:

由于QQ邮箱不支持非加密的协议,那么使用加密协议,分为两种加密协议,选择其中之一即可

1.mail_use_tls    端口号是587

2.mail_use_ssl    端口号是465
我选择的mail_use_tls  协议,所以MAIL_USE_TLS设置为True,端口号587

MAIL_SERVER = "smtp.qq.com"
MAIL_PORT = "587"
MAIL_USE_TLS = True
MAIL_USERNAME = "xxxxxx@qq.com"
MAIL_PASSWORD = "你的授权码--即第三步,点击生成相应的授权码" MAIL_DEFAULT_SENDER = "xxxxxx.hot@qq.com"//默认发送者

5.定义邮箱发送视图函数,填写Message相关的内容包括标题,接收者,内容等等。。。。。例如:

#发送文本
@app.route('/email_send_charactor/')
def email_send_charactor():
message = Message(subject='hello flask-mail',recipients=['1417766861@qq.com'],body='flask-mail测试代码')
try:
mail.send(message)
return '发送成功,请注意查收~'
except Exception as e:
print(e)
return '发送失败'

6.接下来就可以进行邮箱发送了

我已经接收成功了

我已经收到我的邮件呢?   那么你呢?赶紧试试吧~

邮件可以用户,用户认证,授权,找回密码,用户注册等等功能。

如果文章对你有所帮助,别忘了Star一下辛苦的作者哈。

源代码地址:https://github.com/1417766861/flask_mail

flask_mail发送邮件(附源码)的更多相关文章

  1. .Net中使用SendGrid Web Api发送邮件(附源码)

    SendGrid是一个第三方的解决邮件发送服务的提供商,在国外使用的比较普遍.国内类似的服务是SendCloud.SendGrid提供的发送邮件方式主要是两种, 一种是SMTP API, 一种是Web ...

  2. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  3. 在网站开发中很有用的8个 jQuery 效果【附源码】

    jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuer ...

  4. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  6. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  7. 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)

    在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...

  8. jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)

    上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...

  9. 精选9个值得学习的 HTML5 效果【附源码】

    这里精选了一组很酷的 HTML5 效果.HTML5 是现 Web 开发领域的热点, 拥有很多让人期待已久的新特性,特别是在移动端,Web 开发人员可以借助 HTML5 强大功能轻松制作各种交互性强.效 ...

随机推荐

  1. IPython:一种交互式计算和开发环境(魔术命令,快捷键)

    %run命令 在IPython会话环境中,所有文件都可以通过%run命令当做Python程序来运行. 假设在ipython_script_test.py中存放了一段简单的脚本,如下所示: def f( ...

  2. Docker技术入门与实战(文摘)

    第一部分 基础入门 第1章 初识容器与Docker 第2章 核心概念与安装配置 第二部分 实战案例 第三部分 进阶技能 第四部分 开源项目

  3. oss 上传文件夹-cloud2-泽优软件

    说明: 1. 修复同时上传多个文件夹崩溃的问题. 2. 修复阿里云(OSS)特殊文件名称无法上传的问题. 3. 文件夹MD5提供配置项(默认关闭).

  4. Gitolite 权限控制

    官网 http://gitolite.com/gitolite/index.html 安装配置 http://gitolite.com/gitolite/install/ 傻瓜安装教程 http:// ...

  5. 1.3currentThread()方法

    该方法可返回代码段正在被哪个线程调用的信息 package com.cky.test; /** * Created by chenkaiyang on 2017/12/2. */ public cla ...

  6. (转)手把手图文教你eclipse下如何配置tomcat

    转自:http://jingyan.baidu.com/article/ca2d939dd90183eb6d31ce79.html 很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置to ...

  7. (记忆化搜索) FatMouse and Cheese(hdu 1078)

    题目大意:   给n*n地图,老鼠初始位置在(0,0),它每次行走要么横着走要么竖着走,每次最多可以走出k个单位长度,且落脚点的权值必须比上一个落脚点的权值大,求最终可以获得的最大权值   (题目很容 ...

  8. Linux 快捷键使用

    命令运行时使用CTRL+Z,强制当前进程转为后台,并使之停止. 1. 使进程恢复运行(后台) (1)使用命令bg Example: zuii@zuii-desktop:~/unp/tcpcliserv ...

  9. C - Roll-call in Woop Woop High

    Description The new principal of Woop Woop High is not satisfied with her pupils performance. She in ...

  10. Change tab position of PageControl to bottom

    Hi, Try: UniPageControl1 -> ClientEvents -> UniEvents : function tabPanel.beforeInit(sender, c ...