Flask 邮件发送
欢迎关注小婷儿的博客:
csdn:https://blog.csdn.net/u010986753
博客园:http://www.cnblogs.com/xxtalhr/
有问题请在博客下留言或加QQ群:483766429 或联系作者本人 QQ :87605025
OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。
小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。
小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。
重要的事说三遍。。。。。。
一、Flask 邮件发送
from flask import Flask, render_template, current_app
from flask_script import Manager
from flask_mail import Mail, Message
from threading import Thread
app = Flask(__name__)
# 配置邮箱服务器
app.config['MAIL_SERVER'] = 'smtp.163.com'
# 邮箱用户
app.config['MAIL_USERNAME'] = '邮箱@163.com'
# 用户密码
app.config['MAIL_PASSWORD'] = '邮箱密码'
# 创建Mail对象
mail = Mail(app)
def async_send_mail(app, msg):
# 邮件发送需要在程序上下文中进行,
# 新的线程中没有上下文,需要手动创建
with app.app_context():
mail.send(msg)
# 封装函数发送邮件
def send_mail(subject, to, template, **kwargs):
# 从代理中获取代理的原始对象
app = current_app._get_current_object()
# 创建用于发送的邮件消息对象
msg = Message(subject=subject, recipients=[to],
sender=app.config['MAIL_USERNAME'])
# 设置内容
msg.html = render_template(template, **kwargs)
# 发送邮件
# mail.send(msg)
thr = Thread(target=async_send_mail, args=[app, msg])
thr.start()
return '邮件已发送'
#路由配置
@app.route('/')
def index():
# 调用函数发送邮件
send_mail('账户激活', '邮件接收者地址', 'activate.html', username='xenia')
return '邮件已发送'
manager = Manager(app)
if __name__ == '__main__':
manager.run()
二、flask-mail
说明:
专门用于发送邮件的扩展库,使用非常方便
安装:
`pip install flask-mail`
使用:
配置邮件发送选项
创建邮件对象
创建消息对象
使用邮件对象发送消息
封装函数发送邮件
将邮件发送的操作通过一个函数完成
使用者只需要在合适的地方调用即可
异步发送邮件
原因:受限于网络的原因,可能会出现长时间等待的情况
解决:在新的线程中完成邮件的发送
问题:邮件发送需要程序上下文,而新的线程中没有,因此需要手动创建程序上下文
理解:循环引用程序实例的解决方案是使用current_app代替app
Flask 邮件发送的更多相关文章
- Flask—04-文件上传与邮件发送(自带优化)
文件上传与邮件发送 可以按照标题分别直接粘贴对应的文件夹,运行直接用: 原生上传 模板文件 <form method="post" enctype="multipa ...
- 测试开发【提测平台】分享11-Python实现邮件发送的两种方法实践
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 按照开发安排,本篇本应该是关于提测页面的搜索和显示实现,怕相似内容疲劳,这期改下内容顺序,将邮件服务的相关的提前,在之前的产品需求和原型中 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- J2EE 邮件发送那些事儿
距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
- SSH项目里面 忘记密码的邮件发送功能
package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...
- [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作
这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...
- java spring 邮件发送
开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...
- Java邮件发送与接收原理
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
随机推荐
- Mybatis注解开发模糊查询
Mybatis注解开发模糊查询 一般在使用mybatis时都是采用xml文件保存sql语句 这篇文章讲一下在使用mybatis的注解开发时,如何进行模糊查询 模糊查询语句写法(在@Select注解中) ...
- Codeforces731C(SummerTrainingDay06-M 并查集)
C. Socks time limit per test:2 seconds memory limit per test:256 megabytes input:standard input outp ...
- Code Signal_练习题_depositProfit
You have deposited a specific amount of money into your bank account. Each year your balance increas ...
- VC工程从Win32环境往Win64环境迁移的经验总结
作者:朱金灿 来源:http://blog.csdn.net/clever101 首先需要安装Win64的开发环境,具体参考: VS 2008的64位编译环境的安装和使用 其次在工程属性设置中作如下修 ...
- MySql 正则表达式简介及使用
MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...
- Flutter Dart中的异步
以下内容从官网得到: https://webdev.dartlang.org/articles/performance/event-loop Even-Looper Dart是单线程模型,也就没有了所 ...
- Android--自定义半圆环型进度(带动画)
package com.newair.ondrawtext; import android.animation.ValueAnimator; import android.annotation.Tar ...
- MySQL——索引优化实战
上篇文章中介绍了索引的基本内容,这篇文章我们继续介绍索引优化实战.在介绍索引优化实战之前,首先要介绍两个与索引相关的重要概念,这两个概念对于索引优化至关重要. 本篇文章用于测试的user表结构: 索引 ...
- ECMAScript5新特性总结
虽然ECMAScript5早就成为标准推出来了,但之前因为一直用的是ECMAScript3,并且工作中总是要求兼容IE的低版本,所以用的比较少.如今市场上大多数浏览器都能兼容ECMAScript5(I ...
- C#中virtual(虚方法)的理解以及和abstract(抽象方法)的区别
Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例 ...