Flask之flask-mail郵件發送

爲什麼要使用flask-mail發送郵件?
因爲python自帶的email包比較底層,使用起來比較麻煩。
安裝Flask-Mail:

pip install flask-mail

配置 Flask-Mail

MAIL_SERVER : 默認爲 ‘localhost’    #這裏我配置QQ郵箱服務器:smtp.qq.com
MAIL_PORT : 默認爲 25    #QQ郵箱服務器端口:465
MAIL_USE_TLS : 默認爲 False    #使用的是TLS協議,所以爲True
MAIL_USE_SSL : 默認爲 False
MAIL_USERNAME : 默認爲 None    #這裏配置自己的QQ郵箱
MAIL_PASSWORD : 默認爲 None    #這裏的密碼不是郵箱密碼,是需要去開啓的客戶端授權密碼
MAIL_DEFAULT_SENDER : 默認爲 None    #這裏我配置自己的QQ郵箱
MAIL_MAX_EMAILS : 默認爲 None
    #一次性發郵件的最大數量,即recipients列表長度
MAIL_ASCII_ATTACHMENTS : 默認爲 False
    #文件名將會轉換成 ASCII 的。 當文件名是以 UTF-8 編碼的時候,使用郵件轉發的時候會修改郵件內容並且混淆 Content-Disposition 描述,這個時候 MAIL_ASCII_ATTACHMENTS 配置項是十分有用的

註冊 Mail
【app/__init__.py】

#和其他的擴展一樣,我們要先註冊到app
from flask import Flask
from flask_mail import Mail

app = Flask(__name__)
mail = Mail()    #測試時可以直接在Mail()中寫入app對象

mail.init_app(app)    #這種方式是開發的時候常用的,因爲我們要在其他模塊中使用mail對象

發送簡單郵件
【app/e_mail.py】

from flask_mail import Message
from . import mail

def send_email(subject,to,content):
    message=Message(subject,sender=current_app.config["MAIL_DEFAULT_SENDER "],body=content,recipients=[to])
    mail.send(message)

if __name__ == "__main__":
    send_email("jim給你發郵件啦",[email protected],"嘿嘿,這是我使用flask-mail給你發送的郵件哦!")

當然上面只是我們一個簡單的發郵件程序,我們還可以使用模板發送固定形式的數據。
發送模板郵件
【templates/mail.html】

歡迎你觀看此文章,您的郵箱賬號爲:<span style="color:blue">{{ to_mail }}</span>

這個程序在上述文件上進行編寫

from flask import render_template
def send_template_data(subject,to):
    message=Message(subject,sender=current_app.config["MAIL_DEFAULT_SENDER "],recipients=[to])
    message.html=render_template("mail.html",to_mail=to)
    mail.send(message)

if __name__ == "__main__":
    send_email("jim給你發郵件啦",[email protected])

還可以發送附件

def send_template_data(subject,to):
    message=Message(subject,sender=current_app.config["MAIL_DEFAULT_SENDER "],recipients=[to])
    with open('img.png') as f:
        message.attach(img.png,image/png,f.read())
    mail.send(message)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章