WooCommerce 訂單電郵收不到:怎樣查原因,何時才應重寄
客人說「沒收到訂單電郵」,前線最直接的動作是重寄。但同一個畫面可能代表四種完全不同的情況:訂單根本未觸發、WooCommerce 未成功交棒、服務商接受但未入箱,或地址已退信/被抑制。
本文用四段證據定位,再用重寄前核對表決定是否只補一份。若最近改過結帳欄位,先看結帳欄位與配送變更檢查;促銷前可配合開賣營運演練。
「Sent」只代表 WooCommerce 把訊息交給寄信系統;「wp_mail() 回傳 true」也不代表客人收到。 未有事件、日誌與服務商證據前,不要批量重寄;同一訂單、同一類型、同一收件人只重寄一次並留紀錄。
一、四個步驟:不要一開始就改 SMTP
「電郵未送達」不是一個狀態,而是一條路徑。先問:這封電郵應該何時觸發?商店有否嘗試?服務商有否接受?收件箱有否退信或抑制?四段都可能停住。
| 步驟 | 要先回答 | 最低限度證據 | 不能在此證明 |
|---|---|---|---|
| 事件/觸發 | 這個訂單狀態應否寄?通知有否開啟? | 訂單狀態、付款與狀態時間、通知設定、訂單備註 | 服務商已收到 |
| WooCommerce 交棒 | 有沒有嘗試?結果是 Sent、Failed、Disabled、Skipped,還是沒有紀錄? | transactional-emails 日誌、相關訂單備註、日誌等級與保留期 |
已入收件箱 |
| 服務商接受 | 服務商接受了、排隊了,還是拒絕了? | 服務商事件、時間、訊息 ID、拒絕原因 | 已讀取或已入箱 |
| 收件箱/抑制 | 有退信、投訴、抑制、垃圾郵件或信箱問題嗎? | 退信/投訴/抑制事件、收件人回覆、垃圾郵件檢查 | 商店已成功重寄 |
- 01事件/觸發
訂單狀態、付款時間、通知開關
- 02WooCommerce 交棒
Sent、Failed、Disabled、Skipped 或無紀錄
- 03服務商接受
接受、排隊、拒絕與訊息 ID
- 04收件箱/抑制
退信、抑制、垃圾郵件與信箱狀態
重寄前核對表:同一訂單、同一電郵類型、同一收件人,只做一次有紀錄的重寄;第二次要有新證據及另一人覆核。
二、先看事件:Pending Payment 不會觸發預期的付款後電郵
WooCommerce 官方文件指出,訂單仍在 Pending Payment 時不會觸發預期的付款後電郵;通知停用時不會寄;狀態更新前的錯誤也可能令電郵沒有產生 [1]。所以先問「這封電郵本來應否存在」,不是先問「SMTP 有沒有壞」。
到 WooCommerce > Settings > Emails 核對該電郵類型有否啟用,並看訂單狀態歷史與付款時間 [1][2]。若付款已成功但訂單仍停在 Pending Payment,先查付款網關回呼、狀態更新或外掛衝突,不要用重寄掩蓋未更新的訂單。
WooCommerce 會把交易電郵嘗試寫入 transactional-emails 日誌;主要可見四種結果,但實際欄位與狀態取決於已安裝的 WooCommerce 版本、日誌設定、外掛路徑與保留期 [1]:
- Sent:WooCommerce 已把電郵交給寄信系統,日誌等級為 INFO。
- Failed:商店嘗試寄出,但寄信流程回傳錯誤,通常附有失敗原因。
- Disabled:該電郵類型已被停用。
- Skipped:缺少必要條件,例如沒有收件人。
Sent 與 Failed 亦會加入私人訂單備註;Disabled 與 Skipped 只在日誌出現 [1]。不要只看訂單備註就判斷「沒有嘗試」;日誌也不會顯示完整客戶地址 [1]。去重時以訂單編號、電郵類型與事件時間配對,再回訂單核對收件人。
舊店、舊版本或自訂寄信流程未必出現同一組狀態,不要把其他店的畫面當成保證。完全沒有預期紀錄時,先檢查日誌設定、保留期與等級門檻;INFO 或 NOTICE 可能被隱藏 [1]。再查 fatal error、外掛衝突或自訂路徑。「沒有紀錄」是要追查的訊號,不是「沒有寄出」或「沒有嘗試」的證明。
三、Sent 不是已入箱:交棒、接受與投遞是三件事
Sent 只代表 WooCommerce 已把訊息交給寄信系統 [1];wp_mail() 回傳 true 也只代表寄信方法沒有報錯,不代表客人收到 [5]。兩者都不應寫成「已收到」。
WooCommerce 預設經 WordPress 的寄信函式交棒,再由主機或設定的寄信路徑處理 [3]。外部服務商的日誌可能顯示接受、排隊、拒絕或投遞;名稱與欄位因服務商而異 [3]。
「Delivery」也不等於入箱或已讀。以 Amazon SES 為例,Delivery 指已投遞到收件人的郵件伺服器,Open 才是開啟;Delivery 仍未證明入箱 [8]。若服務商顯示延後、排隊或暫時錯誤,而自動重試仍在途,應等待,不要再加手動重寄 [8]。
服務商已接受時,先核對寄件地址是否使用商店網域,而非公開個人郵箱;再檢查 SPF、DKIM、DMARC 等認證 [1][4]。部分公開郵箱供應商會套用寄件者要求,未符合時可能不投遞 [4];認證是信任訊號,不是入箱保證。外置垃圾郵件過濾器也可能攔截,連垃圾郵件夾都未必見到 [3]。
服務商拒絕時,保留原因與時間,先修正寄件路徑或認證,再用測試收件人或 sink 驗證;不要立即向客人重寄。若顯示接受或 Delivery 但收件箱沒有,先查垃圾郵件、隔離區、地址與服務商事件;僅因「客人說看不到」而重寄,會把投遞問題變成重複打擾。
四、退信、投訴與抑制:應該停,不是繞過
退信是投遞失敗,例如信箱不存在或已滿 [6]。同一個「退信」可能對應暫時或永久問題;以 Amazon SES 為例,hard bounce 是永久拒絕,soft bounce 或 DeliveryDelay 可能是暫時問題 [8]。服務商分類不一致,不應把同一重寄動作套用到所有退信。
持續向反覆退信的地址寄送可能損害網域信譽,應停止 [6]。投訴(收件人標為垃圾郵件)也不是靠重寄解決;永久無效地址、投訴或抑制都應停止,不要嘗試繞過 [8]。多數寄信服務會把退信地址加入抑制名單 [6];政策與清除方式因服務商而異,不要假設再按一次重寄可以繞過。
若需改地址,先經既有可信客戶渠道核對身份;未核實前,不要把訂單詳情寄往新地址。若已退信、投訴或抑制,不要再向同一地址補發同一封;保留服務商訊息 ID 與後續事件,交回維運或服務商支援處理。
五、重寄前核對表:單次重寄與去重
重寄的目的,是補一份應該存在但未有可靠證據證明已交付的交易通知,不是用來「試到客人收到」。開始前,先凍結批量重寄,為這一封建立紀錄:
| 核對欄位 | 例子 |
|---|---|
| 訂單與電郵類型 | 訂單編號、Processing order、Completed order 等 |
| 事件時間 | 付款完成、狀態變更、原嘗試時間 |
| WooCommerce 證據 | Sent/Failed/Disabled/Skipped/無紀錄,以及日誌時間 |
| 服務商證據 | 接受、排隊、延後、拒絕、Delivery、退信、投訴、抑制、訊息 ID |
| 收件人核對 | 訂單儲存的收件地址是否正確;不要在共用日誌寫完整地址 |
| 重寄紀錄 | 已重寄次數、執行人、時間、結果、下一次決定 |
只有符合以下條件,才考慮一次手動重寄:
- 已確認這個訂單狀態與電郵類型應該觸發,通知已啟用,而且導致沒有寄出的原因已修正。
- 服務商沒有仍在途的自動重試。若顯示延後、排隊或暫時錯誤,而且自動重試仍待處理,應等待;不要再加手動重寄。
- WooCommerce 日誌顯示 Failed,且寄件路徑或原因已修正並用測試收件人驗證;若 Disabled、Skipped 或無紀錄,先修正原因,不要重寄。
- 收件人地址正確,且沒有退信、投訴或抑制。若需改地址,先經既有可信客戶渠道核對身份,未核實前不要分享訂單詳情。
- 同一訂單、同一類型、同一收件人未有已接受、Delivery、已投遞或已重寄紀錄。僅因客人說沒收到,不是重寄的理由。
- 由另一人覆核上述證據;第二次重寄必須有新的服務商或收件人證據。
不要為了觸發電郵而把訂單或付款狀態來回切換;這會改寫事件與客服紀錄。重寄時只處理這一封,不用批量工具,不夾優惠,也不要向真實客戶做測試;測試請用測試收件人或 sink,WooCommerce 亦提醒測試訂單可能觸發電郵,應在 staging 進行並清理 [7]。完成後記錄結果:接受、延後、Delivery、拒絕、退信、投訴、抑制或仍未知。結果仍未知就停止再按,交回維運或服務商支援。
六、客服交接與 Go/No-Go
給客人的說法要與證據一致。不要寫「已寄出」當成已收到;可寫「系統顯示已交給郵件服務,但未確認入箱,正核對地址與服務商紀錄」。若地址錯誤或已退信,先請客人確認正確地址,不要承諾下次一定送達。
交接至少要有:訂單編號、電郵類型、事件時間、WooCommerce 日誌狀態、服務商事件、收件人核對、重寄次數、抑制狀態、下一次決定與負責人,令下一位同事不會因同一句「客人沒收到」再按一次。
可以放行一次重寄:事件正確、通知已開、原因已修正、沒有自動重試在途、日誌與服務商證據支持、地址未退信/投訴/抑制、沒有重複嘗試,並有覆核人。
應阻擋:Pending Payment 卻當成付款後電郵、通知停用未修、Skipped 條件未補、服務商已接受但只因未見入箱、地址退信/投訴/抑制、自動重試仍在途、同一訊息已重寄、或任何關鍵證據仍未知。未知不是通過。
要整理訂單電郵的送達與重寄紀錄?
若你需要按實際訂單事件、WooCommerce 日誌、服務商事件與客服交接整理檢查紀錄,可聯絡 Managed-WP.™ PRO。
常見問題
客人說沒收到,可以直接重寄嗎?
不應直接重寄。先確認訂單狀態應否觸發、通知有否開啟、日誌與服務商事件顯示甚麼,以及地址是否退信、投訴或抑制。若自動重試仍在途,應等待;只有原因已修正、無自動重試在途、證據支持時,才對同一訂單、同一類型、同一收件人重寄一次並留紀錄。
WooCommerce 顯示 Sent,是否等於客人已收到?
不是。Sent 只代表 WooCommerce 已把電郵交給寄信系統。服務商接受或 Delivery 只是下一個階段;Delivery 可指已到收件人的郵件伺服器,仍未證明入箱或被讀取。仍要查服務商事件、退信/投訴/抑制與收件箱。
為何交易電郵日誌沒有完整客戶電郵地址?
WooCommerce 不會把原始客戶地址寫入交易電郵日誌。應以訂單編號、電郵類型與時間配對,再回訂單核對收件人;不要當共用日誌是客戶資料表。日誌狀態取決於已安裝版本與設定,無紀錄不是沒有嘗試的證明。
收到退信後,可以再向同一地址重寄嗎?
不要假設可以。反覆退信可能損害網域信譽;永久無效地址、投訴或抑制應停止,不要繞過。先確認地址是否正確;改地址前,先經既有可信客戶渠道核對身份,未核實前不要分享訂單詳情。
何時才要檢查 SMTP 或寄件認證?
若事件和通知設定正確,但 WooCommerce 顯示 Failed,或服務商明確拒絕接收,就應檢查寄件路徑、寄件地址與 SPF/DKIM/DMARC。Pending Payment、Disabled 或 Skipped 應先修正事件與通知條件,不是改 SMTP。
資料來源
編輯說明:本文由 Managed-WP.™ PRO 編輯團隊整理官方文件。四段證據與重寄前核對表屬實務整理,不是 WooCommerce、寄信服務商、主機商或任何收件箱的送達保證。版本、外掛、日誌保留與服務商政策可能不同,以實際環境及最新文件為準。本文不指示向真實客戶發送測試或重寄訊息,也不構成設定代碼。