本頁內容WordPress 預設如何寄送電子郵件
WordPress 網站寄出的電子郵件比站長以為的更多,包括聯絡表單通知、密碼重設信、新使用者歡迎信、留言審核通知,以及商店中 WooCommerce 的每一封訂單確認、發票和出貨更新。這些郵件大多沒有人特別設計,也沒有人檢查,直到客戶來信表示沒有收到訂單郵件。
當其中一封郵件進入垃圾郵件匣時,先查看郵件如何從伺服器寄出,再修改內容。在 WordPress 中,這部分的預設設定正是郵件送達率最低的選項。
WordPress 預設如何寄送電子郵件
WordPress 本身以及幾乎所有會寄信的外掛,包括 WooCommerce 和表單外掛,都會透過同一個函式 wp_mail()。它會將郵件交給 PHPMailer,後者預設會將郵件傳給 PHP 的 mail(),再交給主機伺服器上的郵件程式。整個過程不會登入郵件服務供應商、不會簽署郵件,你的 DNS 中也沒有任何紀錄表明這台伺服器可以代表你的網域寄信。
WordPress 選用的寄件者地址是 wordpress@ 加上你的網站網域名稱(WordPress 會移除開頭的 www.)。如果你從未變更這項設定,客戶在寄件者欄位中看到的就是這個地址,而許多網站根本沒有建立這個信箱。
在共享主機上,郵件接著會從主機商的伺服器寄出,並使用許多其他網站共用的 IP 位址。如果其中一個網站向購買的名單寄信,或遭到入侵後開始大量傳送垃圾郵件,這個 IP 位址的信譽就會惡化,而你的密碼重設郵件也會從與它們相同的位址寄出。
因此,WordPress 預設安裝所寄出的郵件,其 SPF 與你的網域並不一致。退信地址通常仍使用主機商自己的伺服器名稱;如果改成使用你的地址,SPF 就會直接驗證失敗。郵件也沒有你網域的 DKIM 簽章,因此 DMARC 會驗證失敗。Gmail 和 Yahoo 在 2024 年 2 月制定了寄件者規則;Microsoft 也在 2025 年 5 月針對每天向 Outlook.com 寄送超過 5,000 封郵件的網域採用相同做法。自 2025 年 11 月起,Gmail 對違反規則的郵件提高了拒收比例,不再只是將其歸入垃圾郵件。
透過真正的郵件服務寄送
最重要的修正是停止使用 mail()。安裝 SMTP 外掛程式,常見的有 WP Mail SMTP、FluentSMTP 和 Post SMTP,而且都有免費版本,然後將它連接到能正確寄送郵件的服務,例如你自己的信箱服務供應商 Google Workspace 或 Microsoft 365,或 Amazon SES、Brevo、SendGrid、Mailgun 等交易郵件服務。
此外掛程式會取代 wp_mail() 底層的傳輸方式,因此每個外掛程式寄出的每封郵件都會改用新方式,不需要修改這些外掛程式本身。如果外掛程式提供服務供應商的 API 選項,請使用該選項,而不要使用需要密碼的普通 SMTP。WP Mail SMTP 指出,即使你的主機封鎖 SMTP 連接埠,API 方式仍然可以運作。
很多人會略過下一個步驟。請在該服務供應商驗證網域。每家服務供應商都會提供需要發布的 DNS 記錄,通常是兩到三筆用於 DKIM 的 CNAME 記錄,以及一項 SPF include,或一個自訂的退信路徑網域。在這些記錄加入你的 DNS 之前,服務供應商會在簽章中使用自己的名稱,導致 DMARC 驗證失敗,就像使用主機寄信時一樣。
聯絡表單的 From 地址
包括 Contact Form 7 和 WPForms 在內的表單外掛,都能讓你選擇收到的通知郵件中 From 欄位要填什麼。許多設定會將訪客的地址填在這裡,讓你按下 Reply 時直接回覆訪客。這看似聰明,卻正是 DMARC 要阻止的行為。
假設一位名叫 Anna 的訪客使用 anna@yahoo.com 寫信。你的網站現在透過 Yahoo 從未授權的伺服器傳送郵件,並聲稱郵件來自 yahoo.com。yahoo.com 發布的 DMARC 政策是 p=reject,因此遵循該政策的接收端會將這封通知視為偽造郵件並拒收。如果訪客使用 Gmail,其政策較寬鬆,郵件更常進入垃圾郵件。WPForms 的文件明確警告了這個問題。From 是你,Reply-To 是訪客
請改成以下設定:
- From: 你自己網域上的地址,例如
forms@yourdomain.com,並使用與 SMTP 外掛驗證相同的網域。 - Reply-To: 表單欄位中的訪客地址。按下 Reply 時仍會回覆 Anna。
- To: 你實際查看的信箱。
在 Contact Form 7 中,請前往 Mail 分頁,在 From 填入你自己的地址,並在 Additional headers 下方加入 Reply-To: [your-email]。其他表單外掛的通知設定中也有 Reply-To 欄位。
WooCommerce 電子郵件
WooCommerce 有自己的寄件者設定:依序前往 WooCommerce、Settings、Emails,然後在 Email Sender Options 區段設定「From」名稱和「From」地址。預設地址是網站管理員的電子郵件地址。如果安裝商店的人使用 Gmail 地址,每封訂單確認信都會聲稱來自 gmail.com,並因為與上述聯絡表單相同的原因而無法通過 DMARC。請在這裡填入你已驗證網域中的地址,商店名稱很適合作為寄件者名稱。(對於寄給你的訂單通知,WooCommerce 已經把顧客地址放在 Reply-To,這才是正確的做法。)
商店電子郵件有兩個不會出現在聯絡表單郵件中的問題。
第一個是寄送量。特賣活動或電子報外掛若透過與訂單確認信相同的管道寄信給顧客,就會讓行銷郵件和交易郵件共用同一個寄件信譽。如果電子報收到投訴,收據郵件也會受到影響。透過不同服務寄送這兩類郵件可將它們分開,行銷郵件使用獨立子網域也有些幫助,但收件端仍會把主網域的信譽納入考量。
第二個是取消訂閱問題。訂單確認信和密碼重設信屬於交易郵件,不受 Gmail 和 Yahoo 一鍵取消訂閱規則的約束。寄給過往買家的評論邀請、購物車未結帳提醒或「你可能也會喜歡」電子郵件屬於行銷郵件。如果大量寄送這些郵件,就必須完整遵守該規則,也就是加入具有一鍵取消訂閱選項的 List-Unsubscribe 標頭。請檢查寄送這些郵件的附加元件是否加入該標頭,無論有沒有,下面的測試都會顯示結果。
DNS 端的白話說明
無論你透過哪個服務寄送郵件,你的網域都需要在 DNS 中設定三項內容,郵件才能獲得信任。完整說明請參閱 SPF、DKIM 與 DMARC 詳解;以下說明這些設定對 WordPress 網站的意義。
- SPF。 網域上的一筆 TXT 記錄,列出哪些服務可以代表該網域寄送郵件。許多寄送服務不需要修改這項設定,因為它們會透過自己的退信網域完成對齊。如果你的服務要求加入
include:,而網域已經有郵件信箱供應商的 SPF 記錄,請將它加入現有記錄。不要建立第二筆,兩筆 SPF 記錄會造成錯誤,而且兩筆都會失效。使用 SPF 檢查工具檢查結果。 - DKIM。 你的寄送服務提供給你的記錄。這些記錄生效後,服務會使用你的網域簽署每封郵件,而這就是 DMARC 要檢查的簽章。
- DMARC。 位於
_dmarc.yourdomain.com的一筆 TXT 記錄。先設定v=DMARC1; p=none; rua=mailto:,並填入你會查看的地址。等報告顯示你的郵件都沒有驗證失敗後,再收緊政策。DMARC 檢查工具可以讀取你目前的設定。
請記得,主機伺服器本身可能仍在寄送某些郵件,例如 cron 工作或直接呼叫 mail() 而非 wp_mail() 的舊外掛。這些郵件會略過 SMTP 外掛,並在 DMARC 報告中顯示為你未預期的寄送來源。
測試真實郵件,而不是測試訊息
每個 SMTP 外掛都有「send test email」按鈕,但它只能證明連線正常,無法呈現 WooCommerce 建立的訂單確認信、包含 Reply-To 的表單通知,或含有 WordPress 所加入連結的密碼重設郵件。
所以,我會讓 WordPress 寄出真實郵件。首頁提供的測試地址只能接收一封郵件,因此每檢查一封郵件,都要取得新的地址。若要測試表單,可暫時將該地址設為通知收件人,然後提交表單。若要測試 WooCommerce,請下測試訂單,並將該地址設為客戶的電子郵件地址。若要測試密碼重設,請將該地址指派給測試使用者,然後要求重設密碼。每封郵件都會取得獨立報告,其中包含 SPF、DKIM、DMARC 及其對齊結果、21 個封鎖名單、內容與連結,以及大量寄件者規則。若要查看郵件在 Gmail、Outlook、Yahoo 和其他服務供應商中進入哪個資料夾,必須將同一封郵件寄到一組收件匣,並在主旨中加入標記。表單或商店訂單無法做到這點,因此請只對你自行寄送的郵件進行這項測試。
如果你不想手動建立測試訂單,免費的 WordPress 外掛會透過你網站本身的 wp_mail() 寄送這些郵件,使用與客戶郵件相同的傳送路徑,並在控制台中顯示結果。當網站開始寄送過去未曾出現的郵件類型時,它也會偵測到。
仍然被判為垃圾郵件時
如果驗證通過,From 地址也屬於你的網域,但郵件仍然進入垃圾郵件匣,請檢查你用來寄送郵件的服務信譽。如果你仍在使用 mail(),常見原因是共享主機的 IP 被列入封鎖名單,你可以使用封鎖名單檢查工具確認。郵件內容的影響通常比多數人預期的小。只有一個連結和三行文字的表單通知,很少會單獨觸發過濾器;但使用複雜 HTML 範本、包含一張大型圖片和縮網址連結的 WooCommerce 郵件則可能會觸發。
檢查一封郵件,修正報告中顯示的問題,然後將郵件重新寄送到新的地址。