使用Flask-Mail发送邮件
简介
在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发送邮件的更多相关文章
- java mail(发送邮件--163邮箱)
package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderIn ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件
文章目录 1. Spring Boot 集成 Java Mail 2. 单元测试 3. 源代码 Spring 对 Java Mail 有很好的支持.因此,Spring Boot 也提供了自动配置的支持 ...
- 利用System.Net.Mail 发送邮件
我这里只是试了一下发mail的功能,感觉.net自带的发mail是比较全的,还是直接上我的code 参数文章:System.Net.Mail 发送邮件 SMTP协议 using System; usi ...
- Android Java Mail与Apache Mail发送邮件对比
原文链接: 一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例如xxx@xx.com 2.收件人姓名:大部分的邮件显示时都会显 ...
- linux下使用自带mail发送邮件
linux下使用自带mail发送邮件 mailx工具说明: linux可以通过安装mailx工具,mailx是一个小型的邮件发送程序,一般可以通过该程序在linux系统上,进行监控linux系统状态并 ...
- .net System.Web.Mail发送邮件 (设置发件人 只显示用户名)
http://blog.163.com/hao_2468/blog/static/130881568201141251642215/ .net System.Web.Mail发送邮件 2011-05- ...
- SpringBoot整合Mail发送邮件&发送模板邮件
整合mail发送邮件,其实就是通过代码来操作发送邮件的步骤,编辑收件人.邮件内容.邮件附件等等.通过邮件可以拓展出短信验证码.消息通知等业务. 一.pom文件引入依赖 <dependency&g ...
- 使用Javax.mail 发送邮件
使用Javax.mail 发送邮件 详细说明都在代码中: 引入依赖 <!--sun定义的一套接收.发送电子邮件的API--> <dependency> < ...
- flask 异步发送邮件
异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应.因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环, ...
- javax.mail 发送邮件异常
一.运行过程抛出异常 1.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/ ...
随机推荐
- 【转载】MySQL查询当天0点,昨天时间
转载自:https://blog.csdn.net/qq_22158021/article/details/78800299 今天是 SELECT NOW();-- 2015-09-28 13:48: ...
- Quartz -----定时任务框架
一.什么是Quartz 由java开发用来执行定时任务,类似于java.util.Timer. 但是相较于Timer,quartz增加了很多功能: 持久性 ...
- Ubuntu修改用户和root密码
如果要修改root的密码:sudo passwd 如果要修改_当前_用户的密码:passwd 如果要修改其他用户的密码(你得有权限):sudo passwd USERNAME,USERNAME就是你要 ...
- PHPCMS如何修改网站名称,网站关键词,网站描述
首先需要登录网站后台,填写管理员用户名密码之后,点击登 点击phpcms后台顶部的"设置"按钮,如下图所示. 然后点击"相关设置"下的"站点管理&qu ...
- ceph cache pool配置
https://my.oschina.net/hanhanztj/blog/515410 0.引入 本文介绍如何配置cache pool tiering. cache pool的作用是提供可扩展的ca ...
- 火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件
目前很多插件不支持 Firefox 3.5 哦1. Add N Edit Cookies 查看和修改本地的Cookie,Cookie欺骗必备. 下载:http://code.google.com/p/ ...
- 03-树2 List Leaves(25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- HTML5+CSS3特效设计集锦
20款CSS3鼠标经过文字背景动画特效 站长之家 -- HTML5特效索引 爱果果h5酷站欣赏 30个酷毙的交互式网站(HTML5+CSS3) 轻松搞定动画!17个有趣实用的CSS 3悬停效果教程 ...
- python基础四(文件操作)
1.文件操作的基本流程 1.1 文件操作的基本流程 # 绝对路径 # r"d:/葫芦娃.txt 前面的r 为转义. linux平台和windows的分隔符不同 f = open(r" ...
- dotnet core项目的nuget存储路径
Where's the package location in aspnet core For project.json the nuget directory is in the user prof ...