對一個 WordPress 網站來說,寄信可能不會是重要的功能,但如果是加掛了 WooCommerce 的站台,寄信就顯得相當重要,現行對消費者購物前後的系統通知信都還是以 email 做為溝通管道,如果還有發行銷信(電子報)的需求,那 email 更是應該被著重考慮的要點之一。
WordPress 原始的發信機制
在沒有任何外掛輔助下,WordPress 會呼叫底層 PHP 的發信機制,但這個發信機制相當原始,誕生於垃圾郵件尚未氾濫的時代,不支援後來發展出的
SPF 認證機制,所以很容易被別的郵件主機視為垃圾郵件,另一方面對於電子報相關的需求來說,也缺少了對開信率、點閱率追蹤的能力,這樣原始陽春的發信機制,對現在的發信需求來說完全是不可用的,而萬惡的 WordPress 的開發商
Automattic 不知道是仗著社群龐大還是什麼原因,這十幾年來竟然完全沒想過把它改善,完全擺爛放生,也真的是幸好 WordPress 的社群龐大,所以我們還可以依賴 MailPoet 這類的服務來做為發信之用。
岔題講一下我心中理想的生態系治理模式應該是像蘋果,提供開發者從上架到收款一條龍的服務,並且嚴審上架 app,也要求開發者必須跟上新版的 SDK 或 API,而不是像 Automattic 這樣擺爛放生不管,縱容有安全風險或粗製濫造的外掛隨意上架。
現代化的發信機制
回頭講發信,市場上發送系統信或行銷信的服務有很多,例如 MailChimp、SendGrid、台灣的電子豹等,這些現代化的發信服務在系統面的共同特色都是採取 API 串接發信,而非原始的 SMTP 發信協議,透過 API 對發信機制的封裝,讓我們可以對發信這件事情做更多可程式化的操作,做出更多附加服務,這是原始 SMTP 難以做到的。
前面提到的發信服務雖然都有 API,不過再回頭考慮與 WordPress 的整合度,會發現並非每間廠商都有為 WordPress 提供原生的外掛,MailPoet 是少數幾間有為 WordPress 提供原生外掛,以及也整合了 WooCommerce 系統信的廠商之一。下面開始紀錄 MailPoet 的一些特色和操作事項。
MailPoet
MailPoet 是個與 WordPress / WooCommerce 深度整合的發信服務,包括系統信的發送以及行銷信(電子報)的發送,不論是系統信或行銷信,都可以透過 MailPoet 的 WordPress 外掛在 WordPress 內編輯信件外觀與內容,也可以在 MailPoet 外掛內追蹤信件的寄達率、開信率、點擊率等數據,MailPoet 應該是市面上與 WordPress 整合的最徹底的發信服務了,也因此,除了開帳號、認證網域、繳費等底層功能是在 MailPoet 網站操作外,幾乎所有的主要發信相關的功能都是直接在 MailPoet 外掛內操作的。
下面是一些操作紀錄,但不會包括太基礎的開立帳號或外掛安裝等操作。
設定發信信箱 像 MailPoet 這種發信服務通常沒有收信功能,頂多幫你把來信轉寄到你的另一個信箱,並且利用發信服務也通常都要設定寄件信箱,讓你的客戶看到信時能正確的從「寄件人」認出你的信箱。
在 MailPoet 設定寄件信箱是需要認證的,登入後在「My authorized Emails」頁填入要做為「寄件人」的信箱:
接著至該信箱收取 MailPoet 的認證信,點擊認證連結確認你真的擁有該信箱即可,寄件人信箱認證後,在 MailPoet 的 WordPress 外掛內的「Settings」頁再把該信箱填入「 Default sender」才算設定完整。
設定網域 前面提到,在垃圾郵件氾濫後,就有人提出 SPF 機制來對發信人作網域認證,來自 SPF 認證的網域的信件較不會被判斷成垃圾信而直接被丟進垃圾信箱,我們常用的個人信箱,像是 Gmail 等,也都有做 SPF 認證,但如果是要在自己的網域透過 MailPoet 做發信,那 MailPoet 也可以協助我們對自有的網域做 SPF 認證,具體的操作其實很簡單,把 MailPoet 提供的認證碼填入你的 DNS 紀錄即可,本人慣用的 DNS 代管是 Cloudflare,其他 DNS 代管服務就自行舉一反三吧!
先到登入 MailPoet 網站,到「My Sender Domains」填入自己的網域:
接著 MailPoet 就會提示要建立的 DNS 紀錄,把那些 DNS 紀錄鍵入 DNS 即可,下面是 Cloudflare 的例子:
可以看到我們在這邊建了兩組 CNAME 與一組 TXT 的紀錄,在 Cloudflare 要注意的是不能啟用 Cloudflare proxy,否則會認證失敗。
DNS 紀錄建好後,回到 MailPoet 驗證網域,如果 DNS 紀錄有被確實存在,應該就會驗證成功,具體的效果就是從 MailPoet 寄出的信會比較不容易被判斷成垃圾信而被無情的丟入垃圾信箱。
提醒一點,設定網域這邊,也是要搭配寄件人信箱才會有用,以上面的例子來說, 我對 o.com.tw 認證了 SPF,那麼寄件信箱也必須是 xxx@o.com.tw,這整組 SPF 機制才會達到「不被當成垃圾信」的效果,如果辛苦認證了網域,寄件信箱卻還是設成 e@gmail.com 的話,那那個網域認證就是白做的,因為收信方的郵件服務根本就不會去查 o.com.tw 的 SPF 認證狀態,因為信件是來自 gmail.com,收信方的郵件服務只會去查 gmail.com 的 SPF 認證狀態。