iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0

可以在網頁上操作之後,來寫寄信,將做好的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"})

結果圖,就完成可以收到信件,直接在信箱上看。


參考資料:

如果有任何寫得不好的地方,請跟我說,謝謝。


上一篇
[Day 22] 前端樣式(Bootstrap)
下一篇
[Day 24] 前端顯示表格
系列文
用 Python 玩 PDF,結合Django 變成一個網頁系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言