flask-mail__电子邮件
来源:互联网 发布:工业设计软件培训班 编辑:程序博客网 时间:2024/05/19 00:14
特定事件发生时提请用户,常用的通信方式是电子邮件
smtplib包可在flask程序中发送电子邮件
flask-mail扩展,包装了smtplib包,更好的和flask进行集合
flask-mail提供电子邮件的支持
flask-mail连接到服务器(简单邮件传输协议),并将邮件交个这个服务器发送
进行配置
若不进行配置,flask-mail会连接localhost上的端口25,不需要验证,就可以发送电子邮件
设置smtp服务器的配置
连接都外部SMTP服务器
我使用的是网易邮箱
电子邮件的使用
1. 安装flask-mail
pip install flask-mail
2. 配置flask-mail使用网易
import os...app.config['MAIL_SERVER']='smtp.163.com'app.config['MAIL_PORT']=25app.config['MAIL_USE_TLS']=Trueapp.config['MAIL_USERNAME']='18856858578@163.com'app.config['MAIL_PASSWORD']=`密码`
对于用户名和密码,在环境中定义
set MAIL_USERNAME = 18856858578@163.com...
3. 初始化flask-mail
from flask.ext.mail import Mailmail = Mail(app)
4. shell 中发送邮件
>>> from flask.ext.mail import Mail>>> from hello import mail>>> msg = Message('test subject',sender = 'you@example.com',recipients = ['you@example.com'])>>> msg.body = 'test body>>> msg.html = '<b>HTML</b> body>>> with app.app_context(): #功能:激活程序上下文,获取程序的上下文... mail.send(msg) # 在激活的程序上下文环境中执行
程序上下文使用的方法 app.app_context()
–>取当前应用程序的上下文,其中保存了,请求的信息,服务器信息,此时msg在其中等等
mail()函数使用current_app,因此要激活程序上下文中执行
5 . 程序中集成电子邮件功能
避免每次手写,jinja2模板渲染邮件文本
first
先写处电子邮件支持,发送邮件的函数
from flask.ext.mail import Messageapp.config['WANG_MAIL_SUBJECT_PREFIX'] = '[WANG]'app.config['WANG_MAIL_SENDER'] = 'you@example.com'def send_email(to,suject,template,**kwargs): msg = Message('app.config[WANG_MAIL_SUBJECT_PREFIX]' + subject, sender = app.config['WANG_MAIL_SENDER'],recipients = [to] ) msg.body = render_template(template+'.txt',**kwargs ) msg.html = render_tmeplate(template+'.html',**kwargs) mail.send(msg)
1) app.config['WANG_MAIL_SUBJECT_PREFIX'] = '[WANG]'
邮件主题前缀
app.config['WANG_MAIL_SENDER']
发信人地址
2) send_email()参数:1.收件人地址to,主题suject,模板template,渲染邮件正文的模板的参数列表**kwargs
3) 指定模板时需要分别渲染纯文本和富文本,并将关键字参数传递到render_template()中
指定模板时不适用扩展名
msg.body = render_template(template+'.txt',**kwargs )
msg.html = render_tmeplate(template+'.html',**kwargs)
second:
hello.py中集成
...app.config['WANG_ADMIN']= os.environ.get('WANG_ADMIN')...@app.route('/',method = ['GOP','POST'])def index(): from = NameForm() if form.validate_on_sublim(): user = User.query.filter_by(username = form.name.data).first() if user is None: db.session.add['user'] session['known'] = False if app.config['WANG_ADMIN']: send_email(app.config['WANG_ADMIN'],'New User','mail/new_user',user = user) else: session['known'] = True session['name'] = 'form.name.data' form.name.data = '' return redirect(url_for('index')) return render_tmeplate('index.html',form =form,name = session.get('name'),known = session.get('known',False)
环境变量的使用
收件人保存在环境变量WANG_ADMIN中,程序启动过程中,环境变量加载到一个同名配置变量中
6. 创建两个模板,保存在mail/ner_user
用于渲染纯文本
用于渲染html的邮件正文
7. 异步发送邮件
from threading import Thread#定义异步发送def send_async_email(app,msg): with app.app_context(): mail.send(msg)def send_email(to,subject,template,**kwargs): msg = Message(app.config[WANG_MAIL_SUBJECT_PREFIX]+subject,sender = app.config['WANG_MAIL_SENDER'],recipients =[to]) msg.doby = render_tmeplate(template,'.txt',**kwargs) msg.html = render_tmeplate(template,'.html',**kwargs) thr = threading.Thread(target = send_async_email,args = [app,msg]) thr.start() return thr
- flask-mail__电子邮件
- flask 电子邮件
- [Flask Web开发] 第6章 电子邮件
- 使用Flask-Mail提供电子邮件支持
- Flask 电子邮件设置error553的解决办法
- 使用Flask-Mail提供电子邮件支持
- 《Flask Web开发》读书笔记(6)第6章电子邮件(关键词:Web开发/Flask/电子邮件)
- 使用flask 发送电子邮件时候遇到的几个问题
- 用flask开发个人博客(24)—— flask中使用Flask_Mail发送电子邮件
- Flask学习总结笔记(8) -- 利用Flask-mail实现电子邮件发送功能
- 电子邮件
- 电子邮件
- 电子邮件
- 电子邮件
- 电子邮件
- 电子邮件
- flask
- flask
- 魔方CFOP算法java实现
- js和jquery实现图片轮播
- 自定义View的绘画加载的画圆圈
- 使用反射获得参数列表里的注解getParameterAnnotations
- 第十章g2o_custombundle/g2o_bundle.cpp
- flask-mail__电子邮件
- xcode4的环境变量,Build Settings参数,workspace及联编设置
- 图形数据库的优势是什么,以Neo4j为例子
- 文章标题多线程概述和基本使用
- 阿里云 centos7 64 安装 mysql 5.6
- 细思恐极的星座分析(上) ——用大数据和机器学习揭开十二星座的真实面目!
- 大数据早报:搜狐《数字之道》,召唤新势力 十一数据观:钱和人都去哪了?(10.10)
- 数据结构--杂记-二分查找
- [DevExpress使用随笔]之Oracle.DataAccess