快速答案:WordPress 預設用主機的 PHP mail() 寄信,沒有任何身分驗證,Gmail、Outlook 很容易把它判成垃圾信或直接丟掉。裝一支 SMTP 外掛(FluentSMTP、WP Mail SMTP 都可以),用你自己網域的信箱或寄信服務驗證後發送,八成的「收不到通知信」就解決了。
為什麼會這樣 #
表單外掛(Contact Form 7、Gravity Forms、Elementor 表單、WPForms)本身不會寄信,它們把信交給 WordPress 的 wp_mail(),再交給主機寄出。主機寄出的信寄件人常是 wordpress@你的網域,沒有 SPF、DKIM 驗證,收件端就當它是偽造的。
還有一種是「以前明明會收」:換了主機、改了管理員信箱、Gmail 改密碼或關掉低安全性應用程式,原本的寄信設定就失效了。有時信其實有寄出,只是全進了垃圾信匣。
怎麼處理 #
- 先分清楚是「寄不出」還是「收不到」:到表單外掛的紀錄看資料有沒有進來(Gravity Forms 的「項目」、Elementor 的「Submissions」、WPForms 的「Entries」)。有資料就代表表單正常,問題在寄信。
- 安裝 SMTP 外掛,選一種寄信方式:Gmail/Google Workspace 要用「應用程式密碼」或 OAuth 授權,一般密碼不能用;公司信箱的 SMTP;或 Brevo、SendGrid、Mailgun 這類寄信服務。
- 寄件人信箱用你網域的信箱(例如
service@你的網域)。用 Gmail 當寄件人卻透過別的服務寄,會被判偽造。 - 到 DNS 加 SPF 與 DKIM 紀錄,寄信服務會給你要加的值。
- 開啟 SMTP 外掛的「郵件紀錄」,送一封測試信。紀錄裡的錯誤訊息通常直接告訴你是帳密錯、還是連不上。
- 通知信收件人多填一個備援信箱。
我們實際遇過的情況 #
一個教育機構網站設定 FluentSMTP 時,試過改用信箱的應用程式密碼也沒有成功,得回到信箱服務那端處理;另一個網站則是搬主機之後,寄信設定得整個重做。一家電商改了管理員 email 之後,自動歡迎信就壞了——寄信設定常跟某個帳號綁在一起,改了其中一個,另一個也要檢查。
比較特別的一例是活動售票電商:買兩張票以上的客人收不到票券信,郵件紀錄顯示附件超過限制,是票券 PDF 太大,跟 SMTP 無關。所以「先看紀錄」永遠是第一步,不要一開始就重設。
什麼時候該找人 #
紀錄顯示寄信成功但對方永遠收不到(多半是網域被列入黑名單,或 SPF、DKIM、DMARC 設錯)、公司信箱是 Microsoft 365 需要 OAuth 授權、或發現有大量不明註冊與垃圾信從你的網站寄出——這時候不要只調設定,需要有人看 DNS 與主機端紀錄。
WPTOOLBEAR網站工具熊