2019-07-16

在樹莓派 RaspBerry Pi 使用 ssmtp + google gmail 以Python發送ASCII編碼的電子郵件

工作環境:
  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
建立郵件發送的需求及Python程式碼:

  1. 要有一個Google Gmail的帳號。
    (這個郵件可能是:xxx.yy@gmail.com常見的Gmail格式,也可能是一個使用G suite的自有郵件域名的郵件格式:abc@xx.yy.zz。以下的程式碼測試使用G suite自有域名郵件OK,用abc@xx.yy.zz代表,以此帳號從樹莓派發信至Gmail)
  2. 發信的Gmail帳號,須透過Google 帳號管理,將『低安全性應用程式的存取權限』設為啟用。
    https://www.google.com/settings/security/lesssecureapps 或
    https://myaccount.google.com/lesssecureapps
  3. 在樹莓派上安裝ssmtp
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install ssmtp
    ( sSMTP - Simple SMTP
    sSMTP is a simple MTA to deliver mail from a computer to a mail hub (SMTP server). sSMTP is simple and lightweight, there are no daemons or anything hogging up CPU; Just sSMTP. Unlike Exim4, sSMTP does not receive mail, expand aliases, or manage a queue. https://wiki.debian.org/sSMTP )
  4. 編輯 /etc/ssmtp/ssmtp.conf
    sudo leafpad /etc/ssmtp/ssmtp.conf
    修改為如下設定:
    # 接收系統郵件的 Email帳號(postmaster)
    root=abc.xyz@gmail.com
    # 使用 GMail 的 MTA 送信
    mailhub=smtp.gmail.com:587
    # 設定主機名稱,預設為raspberrypi
    hostname=raspberrypi
    # 發信的Gmail帳號與密碼
    AuthUser=abc@xx.yy.zz
    AuthPass=GmailPassword
    # 啟用安全加密連線
    UseSTARTTLS=YES
    UseTLS=YES
    # 輸出除錯資訊
    Debug=YES
  5. Python測試程式碼
    import smtplib
    zUser = 'abc@xx.yy.zz'
    zPass = 'GmailPassword'
    zTo = 'toAdd@gmail.com'
    zFrom = zUser
    zSubject = 'Test sendmail by Gmail + ssmtp using Python'
    zHeader = 'To: ' + zTo + '\n' + 'From: ' + zFrom + '\n' + 'Subject: ' + zSubject
    zBody = 'Body : Test sendmail by Gmail + ssmtp using Python'
    oSmtp = smtplib.SMTP('smtp.gmail.com',587)
    oSmtp.starttls()
    oSmtp.ehlo()
    oSmtp.login(zUser, zPass)
    oSmtp.sendmail(zFrom, zTo, zHeader + '\n\n' + zBody)
    oSmtp.quit()

  6. 確認toAdd@gmail.com已收到郵件,
    確認已存放至abc@xx.yy.zz 的寄件備份

參考資料:

沒有留言:

張貼留言