flask-mail 發送帶附件的郵件

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()

參考資料

-Flask-Mail

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章