Flask邮件发送

1、Flask通过flask-mail插件支持邮件发送
pip install flask-mail
pip install flask-script

2、下述将从两种方式验证flask-mail发送邮件,一种是脚本执行,另一种是集成在应用(程序)中发送邮件

2.1脚本方式,emails.py

from flask import Flask

from flask_mail import Message,Mail

from flask_script import Manager,Shell

import os

app=Flask( __name__)

manager=Manager(app)

mail=Mail(app)

app.config['MAIL_SERVER']="smtp.163.com"  #各个邮件服务商MAIL_SERVER不同

app.config['MAIL_PORT']=465

app.config['MAIL_USE_SSL']=True

app.config['MAIL_USERNAME']=os.environ.get("MAIL_USERNAME")

app.config['MAIL_PASSWORD']=os.environ.get("MAIL_PASSWORD")

(flask-venv) $export MAIL_USERNAME="gyc1412@163.com"

(flask-venv) $export MAIL_PASSWORD="xxxxxxx"

python emails.py shell

>>>from flask_mail import Message

>>>from emails import mail

>>>msg=Message("test subject",sender="gyc1412@163.com",

recipients=['guangyichen@sina.cn'])    

>>>msg.body="text body"

>>>msg.html='<b>HTML</b>body'

>>>with app.app_context():

...    mail.send(msg)

...

>>>

2.2 邮件发送集成到应用的方式,其中用到了多线程技术(threading)

#encoding=utf-8

from flask import Flask,render_template

from flask_mail import Message,Mailfrom threading 

import Threadfrom flask_script import Manager,Shell

import os app=Flask(__name__)

app.config['MAIL_SERVER']='smtp.163.com'

app.config['MAIL_PORT']=465

app.config['MAIL_USE_TLS']=False

app.config['MAIL_USE_SSL']=True

app.config['MAIL_USERNAME']=os.environ.get('MAIL_USERNAME')

app.config['MAIL_PASSWORD']=os.environ.get('MAIL_PASSWORD')

mail=Mail(app)manager=Manager(app)

def send_async_email(app,msg):    

    with app.app_context():              #激活上下文?        

        mail.send(msg)                   

@app.route('/')

def index():    

    msg=Message('主题',sender=os.environ.get('MAIL_USERNAME'),

recipients=['guangyichan@gmail.com'])                       

    msg.body="文本body"    

    msg.html='<b>HTML</b>body'    

    thread=Thread(target=send_async_email,args=[app,msg])          

    thread.start()    

    mail.send(msg)    

    return '异步邮件发送成功。'

if __name__  ==  '__main__': 

    manager.run()

运行:python emails.py runserver -h 0.0.0.0 -p9090 页面刷新即可发送邮件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容