很久沒有遠端登入鄉下的樹莓派 Pi 3 了, 前幾天想更新裡面的 Python 套件版本, 這時才發現從上周四起就沒有收到樹莓派整點送出的 IP 通知信, 原以為是 Pi 3 當機, 打電話請爸幫我重開機還是一樣沒收到信. 昨晚用 VNC Connect 連線回鄉下的 Pi 沒問題, 可見應該是送信程式出問題.
今天回到鄉下檢查 Pi 3, 執行 reportip3.py 發現問題出在登入 Gmail SMTP 伺服器失敗 :
pi@raspberrypi:~ $ python3 reportip3.py
current ip: 1.173.51.69 192.168.2.192
Traceback (most recent call last):
File "reportip3.py", line 49, in <module>
smtp.login("yhhuang1966@gmail.com", "yguxhsurqwpseksw")
File "/usr/lib/python3.5/smtplib.py", line 729, in login
raise last_exception
File "/usr/lib/python3.5/smtplib.py", line 720, in login
initial_response_ok=initial_response_ok)
File "/usr/lib/python3.5/smtplib.py", line 641, in auth
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials i25sm32526844pgb.33 - gsmtp')
回想上周曾經改了 Google 登入密碼, 似乎是從那之後就沒收到 Pi 3 的信了. 有可能改 Gmail 密碼後原先為了應用程式申請的 SMTP 伺服器登入密碼也隨之失效, 必須重新申請. 但太久沒有用到 Google 兩階段驗證中的這個功能, 在帳戶管理頁面找了好久都不得其門而入, 最後在下面這篇文章找到答案 :
操作程序則參考 :
輸入 Google 帳戶密碼登入後出現如下頁面 :
按 "選取應用程式" 下拉式選單, 點選 "其他 (自訂名稱)" :
輸入可資識別之名稱後按 "產生" 鈕即可 :
黃色框中的字串就是應用程式登入 Google 的密碼, 複製下來貼到 Python 寄信程式 reportip3.py 的 smtp.login() 第二參數即可恢復整點寄信通報 IP 的功能了 :
pi@raspberrypi:~ $ nano reportip3.py
pi@raspberrypi:~ $ python3 reportip3.py
current ip: 1.173.51.89 192.168.2.192
Send mail successfully!
pi@raspberrypi:~ $
這次學到一個教訓, Google 帳戶登入密碼更改之後, 所有需要登入 Google 的第三方應用程式也必須隨之重新申請登入密碼, 否則可能無法運作.
關於用 Python 傳送 email 參考 :
沒有留言:
張貼留言