Flask使用flask_mail模块发送邮件实例

之前写过一个python使用SMTP服务发送邮件的笔记,地址是https://sulao.cn/post/598.html,flask中也有相关的模块,我们只需要简单的安装配置即可使用

首先pip安装模块

pip install flask_mail

接着直接上我的实例代码吧

#!/usr/bin/python3
#coding:utf-8
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_USE_SSL"] = True
app.config["MAIL_USERNAME"] = "shevechco@qq.com"
app.config["MAIL_PASSWORD"] = "QQ邮箱授权码"
mail = Mail(app)

@app.route('/sendmail')
def sendMail():
    message = Message(subject='python sendmail test !', sender=app.config["MAIL_USERNAME"], recipients=['yang.su@***.com'])
    message.body = '这是一个python使用sendmail的测试邮件'
try:
    mail.send(message)
    return "邮件发送成功!"
except:
    return "邮件发送失败!"
if __name__ == "__main__":
    app.run()

MAIL_DEFAULT_SENDER如果配置额sender也可以不用添加到Message方法内,会使用默认配置的发件人来发送,如果发送sender是一个二维元祖,那么他是可以附带一个昵称进去,例如merci

Message(subject='python sendmail test !', sender=('merci', app.config["MAIL_USERNAME"]), recipients=['yang.su@***.com'])

recipients为收件人,可以设置一个或者多个收件人,也可以后续再添加进去

msg.recipients = ["xxx@qq.com"]
msg.add_recipient("xxxx@qq.com")

邮件内容可以是文本和html格式,无需像之前的smtp服务器需要在头部声明,直接使用

#文本
message.body = '这是一个python使用sendmail的测试邮件'
#html
message.html = '<h1>这是一个python使用sendmail的测试邮件</h1>'

我们最后来看看如何添加附件

with app.open_resource('test.jpg') as fp:
    message.attach('test.jpg', 'image/png', fp.read())


配置Flask-Mail的配置项说明

配置项 默认值 功能

MAIL_SERVER localhost 邮箱服务器

MAIL_PORT 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 的。一般用于添加附件。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/620.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。