快速答案:收信看 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 記錄,客人回覆訂單信全部收不到;訂單信又是用個人 Gmail 寄的,帳號變動之後連續幾個月寄信幾乎全部失敗,沒有人發現。我們先換到獨立的寄信服務恢復寄信,再跟客戶討論要用品牌信箱還是自己的 Gmail。
一家客戶的 MX 指向外部信箱服務,主機面板的信件轉寄怎麼設都無效,因為收信根本不經過主機,要到信箱服務那邊設。2026 年我們幫多個網域清理 SPF:合併成一筆、拿掉已停用服務的 include、補上 DMARC。
什麼時候該找人 #
DNS 在代管廠商手上、正在用 Google Workspace 或 Microsoft 365 又要加第三方寄信服務、或訂單信已經寄失敗一段時間需要補寄。SPF 改錯一個字,公司所有人的信都會開始進垃圾桶。
WPTOOLBEAR網站工具熊