Email Spam Tester

Home部落格WordPress 郵件進垃圾郵件?修正聯絡表單、通知和 WooCommerce 郵件

WordPress 郵件進垃圾郵件?修正聯絡表單、通知和 WooCommerce 郵件

為什麼 WordPress 網站寄出的郵件會進入垃圾郵件匣或根本未送達,以及如何修正聯絡表單、密碼重設和 WooCommerce 訂單郵件。

本頁內容WordPress 預設如何寄送電子郵件
  1. WordPress 預設如何寄送電子郵件
  2. 透過真正的郵件服務寄送
  3. 聯絡表單的 From 地址
  4. WooCommerce 電子郵件
  5. DNS 端的白話說明
  6. 測試真實郵件,而不是測試訊息
  7. 仍然被判為垃圾郵件時

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 郵件則可能會觸發。

檢查一封郵件,修正報告中顯示的問題,然後將郵件重新寄送到新的地址。

更多部落格文章

先將真正的郵件寄到測試地址

執行 42 項檢查,涵蓋 SPF、DKIM、DMARC、封鎖名單、取消訂閱標頭和內容,並查看郵件在 Gmail、Outlook、Yahoo 和其他服務供應商中進入的資料夾。免費,無須註冊。

取得測試地址