Flask Web 與使用電子郵件通信

Flask Web 與使用電子郵件通信

目前常用的註冊方式有兩種(除去使用第三方登錄的),一種是手機號+短信認證,另一種是郵箱+郵件驗證。其實,除了註冊,其他的要與用戶產生通信的方式也主要是這兩種。今天,本篇就來談談郵件通信。

雖然python的標準庫中提供了smtplib包可以用於發送電子郵件,但是在Flask項目中,可以使用集成度更好的Flask-Mail擴展。安裝同樣很簡單,使用pip install flask-mail即可。

Flask Web 與使用電子郵件通信

先來簡單介紹Flask-Mail的過程:它連接到SMTP(簡單郵件傳輸協議)服務器,並把郵件交給這個服務器發送。如果不進行配置,它會默認連接localhost上的25端口,無可驗證即可發送電子郵件。再次提醒,不要在代碼中直接顯示郵件的賬戶,密碼,而是應該保存在系統的環境變量中。

在使用郵件時,為了避免每次都手動編寫電子郵件信息,我們可以把通用的部分抽取出來定義成一個函數,這樣做還有一個好處,就是可以使用Jinja2模板渲染郵件正文,靈活性很高。通常,郵件的主題和發件人地址就是可以用函數固定下來的,對於正文使用渲染。

Flask Web 與使用電子郵件通信

在使用郵件模板時,建議保存在templates文件夾的mail子文件夾下,以便和普通的模板區分開來。另外,多發幾封郵件時,會發現卡頓情況,就像瀏覽器無響應一樣,為了避免處理請求過程中不必要的延遲,我們可以把發送電子郵件的函數移到後臺的線程中,實現異步發送電子郵件。

最後提一下,程序要發送給大量電子郵件時,使用專門發送電子郵件的作業(如celery任務隊列)會比每封郵件都新建一個線程更合適。


分享到:


相關文章: