[WordPress 外掛] Post SMTP 的偵錯功能及使用方式

Alex Lion
阿力獅的教室
Published in
11 min readJun 30, 2017

無論你在你的 WordPress 網站安裝了 Post SMTP 外掛後是否已經完成使用設定,Post SMTP 並不是只有協助你完成寄件這麼簡單。事實上,它內建了多項偵錯功能,讓你可以在設定前、中、後取得偵錯結果,有效排除並釐清網站主機、郵件伺服器間到底是哪一段出了問題。

Post SMTP 的主畫面

Post SMTP 主畫面的進入方式,就是在 WordPress 網站管理後台,指向左側選單上的 [設定],然後按一下 [Post SMTP]。

進入 Post SMTP 主畫面的方式

無論 Post SMTP 設定完成與否,它的主畫面都會顯示一些可供參考的訊息或其他功能連結。

  • 首先,當然就是使用者有沒有完成 Post SMTP 的設定,如果已完成設定,還會顯示目前 Post SMTP 是以哪一種方式寄送電子郵件。
Post SMTP 主畫面訊息
  • 當 Post SMTP 完成設定並開始寄送郵件,主畫面會顯示已透過 Post SMTP 寄出多少郵件,並且告知使用者有多少筆寄送郵件記錄登錄在案。
  • 郵件寄出記錄只代表 Post SMTP 已成功將郵件傳送至外寄郵件伺服器,不代表郵件已寄達收件者信箱。
  • 郵件記錄的數量可於 [顯示所有設定] 的 [記錄] 頁面中修改,預設值、也是最大值是記錄最近的 250 筆。
  • 要檢視郵件記錄,有兩種方式可以到達記錄頁面。
  • 在主畫面按一下 [記錄] 連結。
在主畫面按一下 [記錄] 連結
  • 也可以在管理後台指向 [工具],然後按一下 [電子郵件記錄]。
指向 [工具],然後按一下 [電子郵件記錄]
  • 如果你不想以 [設定小幫手] 進行設定,在主畫面按一下 [顯示所有設定] 也可以直接進行設定,但是要填的欄位無法透過 Post SMTP 自動偵測,需要自己準備好相關資料。此外,設定完畢後的細項微調,也是透過 [顯示所有設定] 連結進行。
[顯示所有設定] 可以進行手動設定或細項設定微調

Post SMTP 的疑難排解功能

Post SMTP 提供了兩項疑難排解功能[ref]已扣掉 [線上技術支援],因為除非使用者有辦法使用英文詳述發生的問題,不然這不會是多數人會選的選項。[/ref],[連線測試] 與 [診斷測試] 都可以 Post SMTP 設定前或設定完畢後使用。

連線測試

Post SMTP 的 [連線測試] 功能,用於測試以下兩者間的連線有沒有問題,發生了問題的話是哪種問題。

  • 你用於架站的主機。
  • 你要要用來寄送郵件的郵件伺服器。

以下是 [連線測試] 的使用步驟。

  1. 按一下 Post SMTP 主畫面上的 [連線測試]。
按一下 Post SMTP 主畫面上的 [連線測試]
  1. 在 [外寄郵件伺服器主機名稱] 中填入需要進行連線測試的主機名稱,然後按一下 [開始測試],就可以得到測試結果。
在 [外寄郵件伺服器主機名稱] 中填入需要進行連線測試的主機名稱,然後按一下 [開始測試],就可以得到測試結果
  • 不一定要測試你已經設定好的主機,可以測試你的網站與任何一台你知道的外寄郵件伺服器的連線狀態。
  • 當然盡量測試你能使用的外寄郵件伺服器,不然測出的結果對你而言沒有多大意義。
  • 連線測試需要時間完成,請耐心等候。
  • 在設定 Post SMTP 前就可以進行這項測試,這對於取得網站主機與你要使用的郵件伺服器間的連線,有相當大的幫助。得知實際狀況後,就可以知道接下來該以哪種方式與你要使用的郵件伺服器進行連線。
  • Post SMTP 設定完畢後進行連線測試,通常是郵件寄送出問題時,要確認既有連線設定是否還正常。
  • 假如既有連線設定發生連線不正常,就必須變更連線方式。舉例來說,如果網站主機之前並未封鎖通訊埠 25、465 以及 587 的對外連線,那你在使用外部 SMTP 外寄郵件伺服器時一定沒問題;但假如之後發生連線問題,且經過測試後確認網站主機的確封鎖了這三個通訊埠,那就代表你要變更連線方式了。
  • 網站主機封鎖特定通訊埠,對於多數使用者來說是不可逆的狀況;此外,如果你自己使用 VPS 架設主機,不要連自己開啟或封鎖了哪個通訊埠都不知道。
  • Post SMTP 的連線測試採用的是 portquiz.net 所提供的結果,假如一直測不出來,可以按一下如下圖中的那個連結,查看 portquiz.net 服務的主機狀態
查看 portquiz.net 服務的主機狀態
  • 因為開發者手誤,外掛的程式碼中的連結是錯的,按一下該連結會出現「無法連上這個網站」的錯誤;要嘛自己在網址前多補一個 w,不然就用阿力獅提供的修補程式覆蓋上傳原始檔案。
  • Post SMTP 外掛 1.7.2 版修補檔[ref]修補程式分別在兩支檔案內各修補了一處輸入錯誤,檔案結構維持與原始檔案相同,直接上傳覆蓋即可。[/ref]: 按一下這裡下載。

連線測試結果範例及簡易說明

基本上要架設一個網站,應該要具備網路基礎知識[ref]網路基本知識包含 OSI 網路七層模型、DNS 的運作原理與設定、郵件通訊協定的運作原理及設定、訊息傳送方式及加密運作原理等等。[/ref],不然出現與網路通聯相關的訊息,你都會看不懂、甚至無法正確描述問題所在。

以下兩張連線測試結果,分別來自 GoDaddy 主機及 OpenShift 免費主機與同一台外寄郵件伺服器間[ref]這次的測試用外寄郵件伺服器為 smtp.zoho.com。[/ref]的連線測試結果。

OpenShift 免費主機的測試結果

從測試結果中可以看出,OpenShift 免費主機並未關閉郵件通訊協定會用到的指定通訊埠 25、465 以及 587,且 Gamil API、Mandrill API 以及 SendGrid API 可使用通訊埠 443。

OpenShift 免費主機的測試結果

其中通訊埠 25 雖是已開啟的狀態,但進行連線測試的外寄郵件伺服器卻不使用該通訊埠;當然,郵件伺服器要用通訊埠 25、465 還是 587,使用者是無法控管的,除非你對整台郵件伺服器的權限跟擁有一台 VPS 一樣高。

依照上圖結果所示,OpenShift 的免費主機可以使用所有連線方式,甚至換了支援通訊埠 25 的外寄郵件伺服器的話,連通訊埠 25 也可以使用。

GoDaddy 主機的測試結果

從測試結果中可以看出,GoDaddy 主機關閉了 SMTP 通訊協定會用到的指定通訊埠 25、465 以及 587,但 Gamil API、Mandrill API 以及 SendGrid API 仍可使用通訊埠 443。

GoDaddy 免費主機的測試結果

假如你要在 GoDaddy 主機上與外部郵件主機連線,免費的只有一個選擇,那就是 Gmail API;假如你要與外部的外寄郵件伺服器連線,要免費的解決方案依舊得透過 Gmail API。前者在「[WordPress 外掛] Post SMTP Mailer/Email Log 繁體中文本地化及使用方式 (以使用 Gmail API 為例)」已經提過如何設定,後者會在下一篇文章中說明。

診斷測試

按一下 Post SMTP 主畫面上的 [診斷測試],就會馬上開始診斷網站主機,而非郵件伺服器喔。

按一下 Post SMTP 主畫面上的 [診斷測試],就會馬上開始診斷網站主機

Post SMTP 的 [診斷測試] 功能,是將目前網站主機的概況列出來,會列出來的項目大致如下。

[診斷測試] 功能會將目前網站主機的概況列出來
  • 網站主機的作業系統、系統版本及主機名稱。
  • 診斷測試的日期時間。
  • 主機的 PHP 版本。
  • PHP 相依性。
  • WordPress 目前使用的版本、語系及編碼。
  • 目前 WordPress 網站所使用的佈景主題名稱。
  • 目前 WordPress 網站已啟用的外掛名稱。
  • WordPress wp_mail 函數使用的篩選器。
  • Post SMTP 版本。
  • 寄件者的電子郵件所屬網域名稱。
  • Post SMTP 是否能防止已設定的寄件者電子郵件地址及名稱遭外掛或佈景主題修改。
  • Post SMTP 目前使用的郵件傳輸方式。
  • Post SMTP 目前的郵件傳輸方式是否設定完畢[ref]例如 Gmail 或 Gmail API 使用 OAuth 2.0 驗證的話,必須完成帳號授權才算設定完畢。[/ref],以及與指定郵件伺服器是否連線正常。
  • Post SMTP 寄送過的郵件成功的有幾件,失敗的又有幾件。

請注意,或許因為網站主機不同會列出更多診斷結果,但是在 Post SMTP 設定完畢進行診斷,會列出的項目一定比上面列舉的

如果你想在 Post SMTP 的技術支援論壇詢問郵件寄送相關問題,請務必附上診斷測試的結果,不然通通都是格空抓藥。

傳送測試郵件

Post SMTP 設定成功不算什麼,要能成功寄送郵件才是真的。

  1. 在 Post SMTP 主畫面中,按一下 [傳送測試郵件]。
在 Post SMTP 主畫面中,按一下 [傳送測試郵件]
  1. 請指定測試郵件的收件者,然後按一下 [下一步]。
  2. 接下來 Post SMTP 會將測試郵件傳送至郵件伺服器,請注意寄送結果是 [成功] 還是 [失敗]。無論結果如何,請按一下 [下一步]。
  • 以 Gmail API 而言,WordPress 網站主機是透過是透過通訊埠 443 與它溝通,應該沒有大問題。主機商不是不能封鎖通訊埠 443,只放行特定標頭的通訊,但是這樣限制太嚴,很容易造成其他問題,所以一般主機商對通訊埠 80 及 443 是完整開放的。
  1. 測試郵件傳送成功的話,工作階段記錄應該不不太需要留意,因為這代表郵件已送達郵件伺服器。按一下 [完成] 就能回到 Post SMTP 的主畫面。
Post SMTP 寄送測試郵件的流程
  1. 應該不必多久,你設定接收測試郵件的收件地址就會收到測試郵件,測試郵件的樣子如下圖。
Post SMTP 寄送的的測試郵件

能正確收到測試郵件的話,後續使用上大概就沒有大問題了。

匯入/匯出/重設外掛

當你為 Post SMTP 設定完畢,且確認這次設定可以正常運作,那這時你便可以將設定匯出,將來要進行全新設定時,便可以直接匯入,無須再次設定。當然,要將 Post SMTP 重設以便進行全新設定[ref]例如你要為 Post SMTP 採用新的郵件服務,重設外掛並再次執行 [設定小幫手] 反而是最簡單的方法。[/ref],也是可以的。

要使用這三個功能,請在 Post SMTP 主畫面上按一下 [匯入/匯出/重設外掛]。

要使用這三個功能,請在 Post SMTP 主畫面上按一下 [匯入/匯出/重設外掛]

匯出 Post SMTP 設定

如果 Post SMTP 已設定完畢,要匯出它的設定,請將 [匯出] 欄位裡的資料全選後進行複製。至於複製出來的設定如何保存,就看你自己囉。

將 [匯出] 欄位裡的資料全選後進行複製

阿力獅自己是把設定文字存在 Evernote 裡,帳號已啟用兩步驟驗證,且相關內容以加密文字方式進行儲存[ref]如果你也使用 Evernote,要為筆記中的文字進行加密,可以參考這篇「如何將 Evernote 裡的內容加密」官方文件裡的說明。[/ref]。

使用 Evernote 為筆記中的文字進行加密

匯入 Post SMTP 設定

要在未經設定或已重設過的 Post SMTP 裡匯入設定,只要把舊有設定貼入至 [匯入] 欄位,並按一下 [匯入]。

把舊有設定貼入至 [匯入] 欄位,並按一下 [匯入]

假如原先的設定是採用 OAuth 2.0 驗證,匯入設定後一樣必須完成取得權限這項操作,並不是匯入設定就可以使用;不過不必擔心,Post SMTP 針對這點,會對使用者加以提示。

此外,當你原先網站的 Post SMTP 設定採用的是 OAuth 2.0 驗證,你要匯入 Post SMTP 舊設定的新網站,如果與原先的網站網址不同,匯入設定也無法完成授權。

至於成因為何,阿力獅建議你可以想一下你在申請 Gmail API 時填了哪些資料,就可以知道個大概。

重設 Post SMTP 外掛

當你需要為 Post SMTP 進行全新設定時,重設 Post SMTP 是必要的操作。要重設 Post SMTP 很簡單,只要按一下 [重設外掛] 即可完成。

按一下 [重設外掛]

外掛狀態

[table id=post-smtp /]

文章內容來源為《阿力獅的教室》。

--

--