Python Flask: 发送邮件

来自CloudWiki
跳转至: 导航搜索

背景

基于web的应用程序通常需要具有向用户/客户端发送邮件的功能。

Flask-Mail扩展使得与任何电子邮件服务器建立简单的接口变得非常容易。

安装扩展

首先,应该在pip实用程序的帮助下安装Flask-Mail扩展。

pip3 install Flask-Mail

邮箱设置

win10系统下网易邮箱怎样设置SMTP服务:http://www.xitongcheng.com/jiaocheng/win10_article_30498.html

Python21051005.png

邮箱设置->账户

Python21042401.png

步骤

导入类

在代码中从flask-mail模块导入Mail和Message类。

创建Flask实例。

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)


配置Flask-Mail

然后按照以下设置配置Flask-Mail。
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'maxin5452@qq.com'
app.config['MAIL_PASSWORD'] = '**********'
app.config['MAIL_USE_SSL'] = True


创建Mail类的实例

mail = Mail(app)

设置Message对象

在由URL规则(‘/’)映射的Python函数中设置Message对象。

1)不添加附件:

@app.route("/")
def index():
    msg = Message('Hello', sender='**@**.com', recipients=['**@**.com'])
    msg.body = "This is the email body"
    mail.send(msg)
    return "Sent"

2)添加附件:未验证:

def index():
    msg = Message('Hello', sender='**@**.com', recipients=['**@**.com'])
    msg.body = "Hello Flask message sent from Flask-Mail"
    # 添加附件
    with app.open_resource('upload/flask.png') as f:
        msg.attach('flask.png', 'image/png', f.read())
    mail.send(msg)
    return "Sent"



主函数

if __name__ == '__main__':
    app.run(debug=True)

运行

python3 mail-flask.py

在另外一个窗口执行:

[root@ecs-6428 ~]# curl http://127.0.0.1:5000/

输出 Sent 说明成功 ~

Python2022070601.png

全部代码

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'maxin5452@qq.com'
app.config['MAIL_PASSWORD'] = '**********'
app.config['MAIL_USE_SSL'] = True

mail = Mail(app)

@app.route("/")
def index():
    msg = Message('Hello', sender='maxin5452@qq.com', recipients=['458976849@qq.com'])
    msg.body = "This is the email body"
    mail.send(msg)
    return "Sent"

if __name__ == '__main__':
    app.run(debug=True)

原文链接:https://blog.csdn.net/weixin_45444133/article/details/120084967