[WordPress] 利用Postman SMTP認證OAuth 2.0,以GMail來發信


在本文中你會學到什麼?

  • Postman SMTP Mailer/Email Log的基本使用方法與設定,解決WordPress發信失敗的問題
  • 如何在「Google Developers Console」中取得GMail API的用戶端ID (Client ID)與密鑰 (Client Secret)
  • 接觸OAuth 2.0的認證方式

有架WordPress的站長應該常常會有信件發送的需求,我之前也曾介紹過「WP Mail SMTP」這款外掛來解決我發信失敗的問題,用外掛的好處就是不太需要動到程式碼,對於不熟程式想要專心寫作的站長來說,也算是一個折衷下的選擇。回歸主題,這陣子發現WordPress的發信又失敗了,WP Mail SMTP (由GMail發送) 的測試信件的錯誤訊息是:「SMTP Error: Could not authenticate」,有可能是信箱被Google鎖住了,或者認證的方式有改變,但可以確認的是我的帳號是可以正常登入GMail的,這讓我想起了之前Windows Live Writer無法存取Blogger的狀況,因此猜測可能是認證上出了一點問題,由於時間上的限制,我也沒有深入再研究,而是直接找來另一個「Postman SMTP Mailer/Email Log」來協助我設定SMTP以及認證上的問題,這款外掛的好處是它支援了OAuth 2.0,因此不需要儲存我們的密碼,同時也支援了一些知名的信件發送服務網站,例如:MandrillSendGril等,實際使用過後的確可以有效的解決我發信的困擾,雖然OAuth 2.0的認證步驟是比較多一點,但是值得有需要的人一試。

網址:Postman SMTP Mailer/Email Log

【使用教學】

1. 安裝Postman外掛

由WordPress後台的「外掛」→「安裝外掛」中,輸入關鍵字「postman」,就可以尋找到我們要安裝的「Postman SMTP Mailer/Email log」

安裝完成後,在「設定」中會出現「Postman SMTP」的選項

2. Postman SMTP的設定

第一次使用Postman SMTP時需要先進行設定,外掛本身有提供設定精靈,對於SMTP設定不熟的人很有幫助:請點擊左上角的「Start the Wizard

2.1 如果你之前有裝過其他SMTP外掛(例如WP Mail SMTP),那麼Postman SMTP會將之列出,我們可以直接套用之前的設定,或者選擇「None」來重新設定,但我覺得其實差不多,只是一些名稱的設定有些許的不同而已,所以建議直接用None來進行設定

2.2 設定要用哪個信箱來發信並自訂發信者的名稱

2.3 接著會根據你輸入的EMail自行掃描適合的SMTP,因本文是採用GMail信箱來測試,所以很容易就可以偵測的到SMTP,如果偵測出來的結果是錯的,請自行填入

2.4 下一步Postman會繼續做連結的測試,並把適合的設定都列出來,以GMail來說,預設的建議值是以Port = 587(適用TLS)、OAuth 2.0的搭配為主,這也是本文的重點

我也測試過用Port = 465 (適用SSL)、Password的組合,但是傳送測試信件時會失敗

2.5 此步驟是最關鍵的一步,我們必需取得GMail API的用戶端ID (Client ID)和密鑰(Client Secret),以下是重點說明:

  • 可直接點擊畫面中「Google Developers Console Gmail Wizard」,進入Google Developers Console來取得我們所需要資訊
  • 畫面亦附上了作者實際的「操作影片」,有需要的人可以進入觀看,或者直接參考本文以下的說明(建議)
  • Authorized JavaScript origins:此資訊在取得Client ID時需要用到
  • Authorized redirect URI:此資訊在取得Client ID時需要用到
  • Client ID:從Google Developers Console中取得用戶瑞ID,請回貼至此欄位
  • Client Secret:從Google Developers Console中取得用戶瑞密鑰,請回貼至此欄位

取得GMail API的用戶瑞ID與密鑰

點擊「Google Developers Console Gmail Wizard」之後,請登入GMail帳號,即可看到註冊Gmail API的畫面,若之前你已經建立過相關的專案,那麼可以用舊專案來管理,若沒有的話,請選擇「建立新專案

點擊「前往憑證」隨續設定憑證資料

在本例中,我們是要通過OAuth 2.0的認證,所以請在新增憑證中選擇「OAuth用戶瑞ID

需先前往「設定同意畫面」中設定產品名稱,才能建立OAuth用戶瑞ID

填入電子郵件與產品名稱,此二欄為必填項目,填完後請儲存離開

下一步會進入「建立用戶端ID」,請選擇「網路應用程式」並給予容易識別的名稱,而最重要的二個欄位填寫方式如下:

  • 已授權的JavaScript來源」請填入在「2.5」節中由Postman SMTP所提供的「Authorized JavaScript origins」資訊
  • 已授權的重新導向URI」請填入在「2.5」節中由Postman SMTP所提供的「Authorized redirect URI」資訊

填寫完成後請記得按「建立

大功告成囉,在這個步驟應該就會看到我們所建立的用戶端ID與密鑰,請把這二個資料回填到剛剛「2.5」節中Postman SMTP的對應欄位中

2.6 回填完GMail API的用戶端ID與密鑰後,就完成了Postman SMTP的設定了

2.7 還差最後一步,回到Postman SMTP設定主頁後,請點擊「Grant permission with Google」,來請求GMail的存取授權

請點擊「允許

2.8 辛苦設定好了之後,我們可以藉由「Send a Test Email」來實際測試看看是否可以正常的發信

輸入收信者的信箱後並點擊「Next

若測試成功,就可以看到「Success」的訊息,若是失敗就得看出錯訊息為何,然後再進一步的排解

小結:OAuth 2.0是近來很熱門的認證方式,雖然在這次的Postman SMTP設定中因選擇了OAuth 2.0導致設定的步驟較多,但在過程中並沒有遇到什麼太大的問題,非常的順利,而且也解決了原本無法發信的問題,最重要的是同時也讓我接觸到了GMail API建立Client ID的過程,算是一個很好的經驗

延伸閱讀:[WordPress] WP Mail SMTP 設定教學,以GMail SMTP為例解決寄信問題