可以在網頁上操作之後,來寫寄信,將做好的PDF,以信件夾帶檔案的方式,寄信,這裡用Gmail,需要一個帳號,這裡帳號建議辦一個新的專門給系統寄信用,因為會把帳號密碼寫在settings.py,可以在生產環境伺服器設定環境變數,設定時再去讀環境變數的值。
要先去Gmail設定兩步驟驗證,並且產生應用程式的密碼。
位置在 個人>安全性>兩步驟驗證,設定完後,去產生密碼,把密碼記下來
開始寫程式,就直接寫在 settings.py
EMAIL_HOST_PASSWORD 貼上剛剛的密碼
settings.py
...
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'xxx@gmail.com' # 寄件者帳號
EMAIL_HOST_PASSWORD = 'xxx' # 寄件者密碼
寫在exportPdfWeather API後面,用djanog EmailMessage 的類別,第一個參數 是主旨,第二個參數是內容,第三個是寄件者,第四個是收件者是List,可以寄多人。
還有其他參數,可以看django 官網說明,EmailMessage
main/views.py
def exportPdfWeather(request):
...
fileName = os.path.join(MEDIA_ROOT, '未來鄉鎮天氣預報.pdf')
pdfWeather = PdfWeather(dataDictList, fileName)
pdfWeather.export()
fromEmail = EMAIL_HOST_USER
toEmailList = ["xxx@gmail.com"] # 收件者
email = EmailMessage(
'未來鄉鎮天氣預報',
'您好,附檔是未來鄉鎮天氣預報PDF,謝謝',
fromEmail,
toEmailList,
)
email.attach_file(fileName)
email.send()
return JsonResponse({"msg": "success"})
結果圖,就完成可以收到信件,直接在信箱上看。
參考資料: