如果後續想接收本站有關 網站架設網站安全網站漏洞防範 等訊息
您可以透過以下表單留下您的電子郵件信箱來訂閱我們的電子報

WordPress 信件寄不出去?從 PHP mail 問題到 cPanel 設定全面檢查

這篇文章深入整理 WordPress 網站信件寄不出去的各種原因,從 PHP mail() 的基本運作原理、常見問題,到如何在 cPanel 中檢查郵件設定、修正 SPF/DKIM/DMARC 驗證記錄,並搭配實用檢查步驟與與主機商溝通重點,幫助你提升郵件送達率。無論你是遇到表單通知、密碼重設信收不到,或想了解主機設定是否影響郵件功能,這篇教學都能成為你的完整指南。

為什麼 WordPress 信件會發不出去?

如果你曾經遇過網站訪客填完表單後卻沒收到通知,或自己也沒收到訂單或密碼重設的郵件,那你並不孤獨,因為有很多人有一樣的困擾。這些郵件大多依賴網站主機內建的 PHP mail() 功能來發送,但這個方法常常不夠可靠。

本文會用清楚易懂的方式說明信件發送的運作流程、常見錯誤、如何逐步檢查問題,以及與主機商如何溝通解決。我們也會介紹 cPanel 中幾個你需要認識的關鍵設定頁面,讓你清楚掌握網站信件送出失敗的可能原因,並知道如何逐步處理。


PHP mail() 是怎麼運作的?會遇到什麼問題?

Php mail

當網站要寄出郵件(例如表單通知),會經過以下流程:

  1. WordPress 叫用 PHP mail() 函數來發信。
  2. 主機的郵件系統(像是 sendmail 或 postfix)接手,把信件投遞出去。

這就像是網站寫了一封信交給「郵差」(PHP mail),再由主機的「郵局」(MTA)實際把信送出去。

但是這個流程常會出錯,原因可能是:

  • 信件沒有通過驗證(缺 SPF/DKIM),被當垃圾信擋下來。
  • 主機設有限制,一小時只能發幾封,超過就寄不出去了。
  • 主機沒安裝好郵件系統,信根本寄不出去。
  • WordPress 的某些外掛或佈景主題改到發信邏輯,導致中斷或異常。

六個實用的自助檢查步驟

Mail test

從最簡單的信箱分類檢查,到主機層級測試,我們建議你按順序執行以下步驟:

步驟 1:先看垃圾郵件匣 信件其實可能已經寄出,只是被歸類到「垃圾郵件」或「促銷」資料夾。提醒收件者將你網站的寄件人地址加入白名單就可以解決。

步驟 2:用 WordPress 密碼重設功能測試 登出後點擊「忘記密碼」,輸入自己的信箱,看看是否能收到重設信。這可以測試 WordPress 最基本的發信功能有沒有正常。

步驟 3:用一段簡單的 PHP 腳本做獨立測試 寫一個 test_mail.php 上傳到主機,用來直接測試 PHP mail() 是否能正常工作。如果這個測試也收不到信,那問題多半在主機端。

步驟 4:安裝郵件測試外掛 像 WP Mail SMTP、Post SMTP 等外掛,可以幫你發測試信,還會記錄錯誤訊息,幫助你看出是哪邊出問題。

步驟 5:檢查 WordPress 管理員信箱設定 後台「設定 > 一般」中,確認主要電子郵件地址是否正確。這是系統通知信的預設收件人。

步驟 6:排除外掛或佈景主題干擾 停用全部外掛 → 換成預設佈景主題 → 一個一個重新啟用,每啟用一個就測一次發信,找出造成衝突的元兇。


檢查 cPanel 設定(主機控制面板)

Email deliverability

如果你已完成以上 WordPress 層級的檢查,還是沒解決,接下來就要到主機端看看了。登入你的 cPanel,依序檢查以下項目:

  1. Email Routing(郵件路由)
    • 進入 Email Routing 頁面。
    • 檢查你要發信的網域是否設為「Local Mail Exchanger」。這表示郵件由你的主機處理,而不是跳出去使用外部郵件伺服器。
  2. Email Deliverability(郵件可傳送性)
    • 檢查 SPF 和 DKIM 記錄是否正確設置。若顯示「未啟用」或「錯誤」,點選「修復」,cPanel 會幫你生成正確的 DNS 記錄內容。
  3. 你的 DNS 是不是由別的地方控管?(非在主機商)
    • 如果你是用 CloudflareGoDaddyNamecheap 代管 DNS,那你要到這些地方的 DNS 管理頁面,手動新增或更新 SPF、DKIM 和 DMARC 的 TXT 記錄。
    • SPF 範例:v=spf1 +a +mx include:spf.cpanel.net ~all
    • DKIM 通常名稱是 default._domainkey,值是一長串加密字串。
    • DMARC 建議格式:_dmarc 為名稱,內容可設為:v=DMARC1; p=none; rua=mailto:admin@yourdomain.com;
    • 記得:這些 TXT 記錄設完後,要等 DNS 傳播完成(通常幾分鐘到幾小時)
  4. 用線上工具幫你檢查 DNS 設定有沒有生效

該怎麼跟主機商客服詢問?

Hosting help

如果你以上都檢查完,信還是寄不出去,那就需要主機商的幫忙。你可以請他們協助確認以下幾件事:

  1. PHP mail() 函數是不是被主機封鎖?
  2. 郵件系統(MTA)是不是沒裝好,或目前有問題?
  3. 主機有沒有限制發信速度或每日上限?
  4. 主機 IP 是不是被黑名單列為垃圾信來源?
  5. 防火牆是不是擋住了寄信的通道?(像 port 25、465、587)
  6. 可否提供郵件日誌幫你找出錯誤線索?
  7. 如果 PHP mail 不可用,請他提供 SMTP 的登入資訊(SMTP 主機、埠號、是否使用 TLS/SSL 加密)

如果主機商無法或不願幫你處理這些問題,也可以考慮換一間支援比較完整的,例如我們高登工作室主機,對 WordPress 和寄信相容性處理得比較好。


SMTP 是更穩定的選擇(另文詳述)

如果你希望信件寄得更穩、垃圾信機率更低,SMTP 是更推薦的方式。不過這部份我們將另外寫一篇完整的教學文介紹。

推薦工具與資源:


高登工作室主機提供 SMTP 與 PHP mail 雙支援機制,並針對 WordPress 架站最佳化郵件送達率,是可靠的發信環境選擇之一。或者您不是使用我們的主機我們也可以協助您解決發信的問題。


輸入您的信箱訂閱電子報


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料