Flask-Mail包裝了Python標準庫中的smtplib包,簡化了在Flask程序中發送電子郵件的過程。
Flask-Mail通過連接SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)服務器來發送郵件。在開始發送電子郵件前,我們需要配置SMTP服務器。在開發和測試階段,我們可以使用郵件服務提供商的SMTP服務器(比如QQ),這時我們需要對Flask-Mail進行配置。
配置郵箱服務器
QQ授權碼在QQ郵箱設置中進行配置。
配置項如下:
MAIL_SERVER = 'smtp.qq.com',
MAIL_PROT = 587,
MAIL_USE_TLS = True,
MAIL_USE_SSL = False,
MAIL_USERNAME = "",
MAIL_PASSWORD = "",
MAIL_DEBUG = True
代碼
# -*- coding: utf-8 -*-
import os
import sys
from flask import Flask
from flask_mail import Mail
from flask_mail import Message
app = Flask(__name__)
app.config.update(dict(
DEBUG=True,
MAIL_SERVER="smtp.qq.com",
MAIL_PORT=587,
MAIL_USE_TLS=True,
MAIL_USERNAME="[email protected]",
MAIL_PASSWORD="xx", # QQ 授權碼
MAIL_DEFAULT_SENDER=('xx', "xx"),
))
mail = Mail(app)
# 去除空格
# app.jinja_env.trim_blocks = True
# app.jinja_env.lstrip_blocks = True
@app.route('/send_mail')
def send_mail():
subject = 'flask_mail 測試'
recipients = ['Tom <[email protected]>']
body = '這是一封測試郵件'
message = Message(
subject=subject, sender=app.config['MAIL_USERNAME'], recipients=recipients)
message.body = body
# 加載附件
with app.open_resource('./xx.pdf') as fp:
# attach("文件名", "類型", 讀取文件)
message.attach("簡歷.pdf", 'application/octet-stream', fp.read())
try:
mail.send(message)
return '發送成功'
except expression as e:
print(e)
return '發送失敗'
if __name__ == "__main__":
app.debug = True
app.run()