之前写过一个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 的。一般用于添加附件。