flask 发送新浪邮箱邮件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kaikai136412162/article/details/87184713

邮件的用处很多,如注册时验证用户、找回密码、线上程序出现重大bug时触发邮件提醒以及服务器关键数据(CPU、网络、内存)监控提醒等

安装使用邮件的依赖包

pip install Flask-Mail

配置Flask-Mail

      

配置项 默认值  功能
MAIL_SERVER     localhost     邮箱服务器
MAIL_PORT    25     25 端口
MAIL_USE_TLS      False 是否使用TLS
MAIL_USE_SSL   False 是否使用SSL
MAIL_DEBUG         app.debug 是否为DEBUG模式,打印调试消息
MAIL_SUPPRESS_SEND        app.testing  设置是否真的发送邮件,True不发送
MAIL_USERNAME        None  用户名,填邮箱
MAIL_PASSWORD       None  密码,填授权码
MAIL_DEFAULT_SENDER       None   默认发送者,填邮箱
MAIL_MAX_EMAILS     None    一次连接中的发送邮件的上限
MAIL_ASCII_ATTACHMENTS         False 如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。一般用于添加附件。


一个完整可运行的程序:

# -*- coding: utf-8 -*-
from flask import Flask, request
from flask_script import Manager, Shell
from flask_mail import Mail, Message
from threading import Thread
import os
 
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.sina.com'
app.config['MAIL_PORT'] = 25
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USERNAME'] = ''  # 你的新浪邮箱
app.config['MAIL_PASSWORD'] = ''  # 邮箱密码
mail = Mail(app)
 
msg = Message('标题', sender='开通服务的邮箱', recipients=['接收方邮箱'])
msg.body = '内容'
with app.app_context():
    mail.send(msg)
 
if __name__ == '__main__':
    app.run()

上面是一个发送邮件的简单示例,只要运行脚本,就会发送邮件到收件箱。在实际运用中,发送邮件通常需要几秒中,当触发发送邮件条件时我们不会在页面停留等他发完才去进行别的操作,而是为发送邮件服务开启另一个线程,方法:

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)
 
@app.route('/send_email')
def send_email():
    msg.body = '内容'
    thread = Thread(target=send_async_email, args=[app, msg])
    thread.start()
    return 'success'


django发邮件类似https://blog.csdn.net/kaikai136412162/article/details/85341878

一个完整的例子

from flask import Flask, request
from flask_script import Manager, Shell
from flask_mail import Mail, Message
from threading import Thread
import os

app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.sina.com'
app.config['MAIL_PORT'] = 25
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '密码'
mail = Mail(app)

# msg = Message(subject='标题', sender='[email protected]', recipients=['[email protected]','[email protected]'])
msg = Message(subject='标题', sender='[email protected]')
# msg.body = '内容'

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)
@app.route('/send_email')
def send_email():
    msg.recipients=['[email protected]','[email protected]']
    msg.body = '内容'
    thread = Thread(target=send_async_email, args=[app, msg])
    thread.start()
    return 'success'
if __name__ == '__main__':
    app.run()

加油吧,少年!2019.2.13





 

猜你喜欢

转载自blog.csdn.net/kaikai136412162/article/details/87184713