Python – SMTP

前情提要

痞客邦最近「新增文章」API,不斷地出現未知的伺服器錯誤,而且從回應的時間來猜測的話,
感覺像是他們自己本身內部的錯誤導致 Time out 之類的。

礙於目前還無法在短時間內處理好一台伺服器建構多個 WordPress,
所以只好先將內容發佈到 Blogger 來解決當前的問題。

而我們只需要使用到發文的功能,所以就可以簡單利用電子郵件來發文;

  1. Blogger 設定的「以電子郵件傳送」
  2. 使用電子郵件張貼填入電子信箱,並開啟「立即發佈電子郵件」
  3. 儲存設定

這樣只要寄信給設定的地址的話,Blogger 便會自動發文。

SMTP

首先在 Python 當中,我們可以使用 smtplib 來發送信件,
下列使用 gmail 為例:

import smtplib
smtpserver = smtplib.SMTP_SSL("smtp.gmail.com",465)
smtpserver.ehlo()
smtpserver.login(username, password)

若你直接執行的話,可能會收到登入失敗的訊息;
由於 Google 在安全性設定上,會阻擋安全性較低的應用程式,
所以若要使用的話,則需要開啟相關設定:

登入與安全性
啟用

這樣的話,就可以順利地登入 gmail。

再來準備信件的內容並寄出:

from email.mime.text import MIMEText
from email.header import Header 

from_address = 'Archie.Chang.iOS@gmail.com'
to_address = ['Archie.Chang.iOS@gmail.com']

message = MIMEText(html_body, 'html', 'utf-8')
message['From'] = from_address
message['To'] = to_address[0]
message['Subject'] = subject

smtpserver.sendmail(from_address, to_address, message.as_string())
smtpserver.quit()

小雷

其中,sendmail 的 to_address 為 list 型態;
之前測試的過程中,我將 sendmail 改為

smtpserver.sendmail(from_address, to_address[0], message.asString())

結果導致它不斷地寄同一封信,Blogger 文章就大爆發了。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s