快速答案:收信看 MX,寄信看 SPF、DKIM、DMARC。網域沒有 MX 記錄就永遠收不到信;SPF 只能有一筆,而且要列出所有替你寄信的服務;DKIM 要在寄信服務產生後貼進 DNS。這四筆設對,WooCommerce 的訂單信和表單通知信才會穩定進收件匣。
為什麼會這樣 #
WordPress 預設用主機的 PHP mail 寄信,沒有任何簽章,收件端很容易判成垃圾。改用 SMTP 服務之後,還要在 DNS 告訴全世界「這家服務有權替我的網域寄信」,那就是 SPF 和 DKIM。很多站換過好幾家寄信服務,SPF 累積成好幾筆、或 include 太多超過十次查詢限制,整筆失效。網域搬到 Cloudflare 時 MX 沒跟著搬,客人回信全部石沉大海。最脆弱的是用個人 Gmail 綁站台寄信:帳號一改密碼或被停用,整站的訂單信就寄不出去,而且沒人會發現。
怎麼處理 #
- 先查現況:用 MXToolbox 之類的工具查 MX、SPF、DKIM、DMARC 四項。
- MX:要收信就指向你的信箱服務(Google Workspace、Microsoft 365 或其他)。沒有信箱服務也要知道「這個網域收不到信」是預期的,寄件人就不要用它。
- SPF:只保留一筆 TXT,格式
v=spf1 include:各寄信服務 -all;不再使用的服務移除;總查詢次數不超過十次。 - DKIM:在寄信服務端產生 selector 和公鑰,貼進 DNS。WordPress 這邊裝 SMTP 外掛(FluentSMTP、WP Mail SMTP、Post SMTP 都可以)走該服務寄。
- DMARC:先設
p=none收報告,確認 SPF 和 DKIM 都對齊了,再收緊。 - SMTP 外掛設定裡,加密方式和埠號要成對:587 配 STARTTLS,465 配 SSL,配錯會連線逾時。寄件人網域要和 DKIM 簽的網域一致。
- 寄一封測試信到 Gmail,用「顯示原始郵件」看 SPF、DKIM、DMARC 是否都 PASS。
我們實際遇過的情況 #
一次寄信健檢裡,有網站是完全寄不出信的——訂單信、表單通知信全部發不出去,而且沒有人發現,因為沒收到信的是客人,不是站長。我們把它改走獨立的寄信服務,一直到測試信真的寄出成功才算收尾。另一個網域的收信端也整理過:MX 的優先權有衝突,來信會隨機分流到另一台主機,等於隨機漏信。
一家客戶的 MX 指向外部信箱服務,主機面板的信件轉寄怎麼設都無效,因為收信根本不經過主機,要到信箱服務那邊設。2026 年我們也幫一批網域整理過寄信設定:SPF 合併成一筆並檢查十次查詢上限、刪掉已停用服務留下的舊 MX、缺 DMARC 的補上。
什麼時候該找人 #
DNS 在代管廠商手上、正在用 Google Workspace 或 Microsoft 365 又要加第三方寄信服務、或訂單信已經寄失敗一段時間需要補寄。SPF 改錯一個字,公司所有人的信都會開始進垃圾桶。
WPTOOLBEAR網站工具熊