WordPress 表單信件沒收到:分清送出提示、郵件記錄與收件匣

WordPress 聯絡表單顯示送出成功,信箱卻找不到信,先不要把整個表單重做。畫面提示、WordPress 寄信處理、郵件服務記錄和你的收件匣,是四個可以分開查的位置。用一筆有識別字的測試訊息往下找,才知道卡在哪裡。

下面以 Contact Form 7 為例。其他表單外掛的欄位名稱可能不同,但仍應先確認寄給誰、由誰寄出,以及寄信服務有沒有接到這一封。測試前使用自己控制的收件地址,不要拿真客戶當測試收件人。

先記下這一次送出的識別字

在主旨或訊息裡加入容易搜尋的字,例如 contact-check-A,記下送出時間與時區。只送一筆,保留當時的畫面提示。稍後查紀錄時,用同一主旨和收件地址比對;不要連續按送出,最後分不清收到了哪一封。

如果表單一直轉圈、必填欄位報錯,或顯示處理失敗,先查表單提交這一段。Contact Form 7 的錯誤可能來自寄信失敗,也可能是防垃圾機制阻擋;應按當時訊息與紀錄判斷,不只靠框線顏色猜。不要為了測試而在正式站關掉所有防垃圾保護。

查郵件頁籤,不只查表單欄位

到後台「聯絡 → 聯絡表單」,打開網站真正使用的表單,再看「郵件」頁籤。首先核對 To:它是網站收到詢問的地址,不一定是表單填寫人的 Email。舊站搬家後,這裡可能仍指向前任管理者或拼錯的地址。

From 是寄件地址。Contact Form 7 要求它屬於網站同一網域,並且要符合你使用的郵件服務已驗證、允許寄出的網域或帳號;兩個條件都要核對。要讓你按回覆時能回到填表人,可以使用 Reply-To 配合表單的 Email 標籤,而不是任意將訪客地址當成正式寄件人。

To: 你控制的收件地址
From: 與網站同網域、且郵件服務驗證允許的寄件地址
Additional headers: Reply-To: [your-email]

[your-email] 必須對應你表單裡實際的欄位名稱。如果表單用別的名稱,就換成那個名稱。順便查主旨和郵件內文的標籤:畫面有新增欄位,郵件模板未必自動把它寫進信裡。不要把 SMTP 密碼或 API 金鑰放進表單內容。

成功提示告訴你什麼?

WordPress 官方的 wp_mail() 文件說明,回傳成功只表示寄信處理沒有回報錯誤,不能保證收件人已收到。Contact Form 7 顯示成功後仍可能有信件被後續服務或收件過濾擋住。這時反覆調整按鈕文字,通常找不到郵件去哪了。

請維護者查看目前使用的寄信方式:主機預設寄信、SMTP,還是郵件服務 API。不要一口氣啟用多個寄信外掛;不同設定可能同時攔截 WordPress 寄信,反而看不出實際走了哪一條路。

看一筆表單提交如何到接收端

本例使用一套另建的 WordPress,Contact Form 7 接到專用的 Mailpit 郵件捕獲工具。收件人是 [email protected],寄件人是 [email protected],Reply-To 是表單填寫的 [email protected]。這些是示範地址,不是可以收正式信件的帳號。

送出主旨 contact-check-B:詢問選單設定 後,Mailpit 裡出現同一主旨的信件。打開那封信,能核對 To、From、Reply-To 和訊息內容。這讓我們追到 WordPress 表單已交給指定 SMTP 接收端;如果你的網站也有郵件記錄,可用同樣方式找出是哪一筆。

Mailpit 接收端顯示 contact-check-B 主旨、To、From、Reply-To 與選單詢問內容
自建表單示例:專用接收端顯示同一主旨、地址與詢問內容;仍需另查外部信箱投遞。

Mailpit 接住測試信件後,不會替這個案例向外部信箱投遞。使用 Gmail、公司信箱或其他郵件服務的正式網站,還要繼續看供應商投遞記錄和真正的收件匣,不能把捕獲畫面當成外部送達結果。

郵件服務有紀錄,收件匣還是沒有?

先用識別字找郵件服務的事件記錄,核對時間、目的地址與狀態。排隊、接受、退信或被拒絕,意思不同;若記錄有錯誤原因,先交給維護者依服務商文件處理。不要只看到「已送出」就要求訪客再填一次。

接著到收件端搜主旨,查垃圾郵件、封存、規則移動與隔離區;公司信箱可能需管理者查看郵件閘道。某個地址收得到、另一個收不到時,保留兩次識別字與各自紀錄,比直接換外掛更容易定位差異。

寄件網域的驗證也可能影響郵件接受方式,但 SPF、DKIM 或其他 DNS 設定應依你使用的服務商指引核對。先把實際錯誤和使用的寄信服務交給維護者,不要為一封找不到的信隨便新增網路上的 DNS 範例。

沒有舊訊息記錄,要怎麼查?

寄信服務的測試按鈕與網站表單也要分開驗。測試按鈕收到信,只能說明那次測試使用的寄件設定可以工作;表單可能套用不同的 From、不同收件人,或沒有帶入必要欄位。先保留測試信的識別字,再送一筆真正從表單產生的訊息,把兩筆的收件設定對照。

有自動回覆功能時,先查站長通知,再查回覆填表人的那一封。Contact Form 7 的 Mail (2) 是另一份郵件模板,不能因為站長收到了就認定訪客也收到了。依官方說明,它在主要 Mail 寄信成功後才發送;仍需另外核對它的收件地址與投遞結果。

附件也是常見差異。先用沒有附件的簡短訊息查主流程,再在自己的測試頁加一個允許的小檔案,確認服務商大小限制與表單附件標籤。若只有附檔時失敗,把檔案類型、容量與錯誤時間交給維護者,不要先把上傳限制放到無上限。

提供給維護者的資料可以很短:表單網址、識別字、送出時間、收件地址與畫面提示,另附郵件服務的那筆狀態。先遮掉客戶訊息和私人地址;不用一開始就分享整份日誌或帳號密碼。資訊能對上同一筆,往往比只有「收不到信」四個字更好查。

Contact Form 7 本身不保存提交訊息,官方 FAQ 另介紹 Flamingo 作為訊息管理工具。如果網站從未安裝或啟用保存功能,不能假定舊詢問都會在後台等著找回。先查已存在的郵件服務紀錄,再決定是否需要新增儲存功能與資料保留規則。

若要新增記錄外掛,先了解它會存哪些個人資料、誰可查看和保留多久,再在測試站試一筆。不要為了排錯永久保存所有原始表單內容,也不要把含客戶資料的完整日誌公開貼到求助區。

最後再送一筆新的識別字,確認表單提示、寄信紀錄與收件端可以互相對上。原本的問題若只修了收件地址,就不用順便重排表單;若訪客也常填錯欄位,再參考必填欄位與送出回饋的寫法,分別處理兩個問題。

參考資料

原文鏈接:https://wntheme.com/wordpress-form-email-delivery-check/,轉載請註明出處。
0

評論0

顯示驗證碼
沒有帳號?註冊  忘記密碼?