1.mail.record_messages()的作用:
为了能够追踪发送邮件的“轨迹”
2.实现效果:
3.主文件main.py:
from flask_mail import Message,Mail
from flask import Flask,flash,request,redirect,render_template
app=Flask(__name__)
app.config.update(
MAIL_DEBUG=True,
#邮箱服务器
MAIL_SERVER='smtp.qq.com',
#端口号
MAIL_PORT=465,
#支持SSL协议
MAIL_USE_SSL=True,
#邮箱账号
MAIL_USERNAME='xxx@qq.com',
#授权码
MAIL_PASSWORD='',
#设置发送邮件的最大传输数量
MAIL_MAX_EAMILS=5,
#文件名将会转换成 ASCII
MAIL_ASCII_ATTACHMENTS=True
)
mail=Mail(app)
# 或者这种方法进行实例化 mail.init_mail(app)
@app.route('/index',methods=['POST','GET'])
def index():
#追踪发送邮件的“轨迹”
with mail.record_messages() as outlex:
msg=Message(body='hello',
sender=('邮件发送者','xxx@qq.com'),
recipients=['xxx@qq.com'],
subject='testing'
)
# # 发送邮件的同时添加附件
with app.open_resource('GUIZHOU.jpg') as fp:
# 文件,文件类型,读取文件
msg.attach('GUIZHOU.jpg', 'image/jpg', fp.read())
msg.html = '<h3>testing</h3>'
mail.send(msg)
#判断发送的邮件是否只有一个
assert len(outlex)==1
#判断subject是否为testing
assert outlex[0].subject=='testing'
return 'jsonfiy'
#通过 email_dispatched 信号开始支持信号量。只要邮件被调度,信号就会发送(即使邮件没有真正的发送,例如,在测试环境中)。
# email_dispatched 信号的函数使用 Message 实例作为第一参数,Flask app 实例作为一个可选的参数:
def log_message(message, app):
app.logger.debug(message.subject)
email_dispatched.connect(log_message)
if __name__ == '__main__':
print('Pycharm')
app.run(debug=True)
|