WooCommerce Troubleshooting

WooCommerce Email ไม่ส่ง เกิดจากอะไร แก้ยังไง

WooCommerce Email ไม่ส่ง เกิดจากอะไร แก้ยังไง

อีเมลแจ้งการสั่งซื้อ ยืนยัน Order หรือแจ้งสถานะ — ถือเป็นส่วนสำคัญของระบบ WooCommerce ที่ลูกค้าคาดหวังจะได้รับทันทีหลังชำระเงิน ถ้าเมลเหล่านี้ไม่ออก ลูกค้าสับสน เจ้าของร้านต้องตอบคำถามซ้ำ ๆ และอาจเสียความน่าเชื่อถือโดยไม่รู้ตัว ปัญหานี้แก้ได้ แต่ต้องระบุสาเหตุให้ถูกก่อน

nn

อาการที่พบบ่อย

n

ปัญหา WooCommerce Email ไม่ส่ง มักแสดงออกใน 3 รูปแบบหลัก:

n

    n

  • ลูกค้าไม่ได้รับเมลยืนยัน Order แต่ระบบบันทึก Order ไว้ในหน้า Admin ปกติ
  • n

  • แอดมินไม่ได้รับอีเมลแจ้ง Order ใหม่ ทั้งที่เปิดการแจ้งเตือนไว้แล้ว
  • n

  • เมลเข้า Spam / Junk ของลูกค้า ทำให้ดูเหมือนไม่ถึง
  • n

n

อาการเหล่านี้อาจเกิดจากคนละสาเหตุ จึงต้องตรวจสอบเป็นขั้นตอน ก่อนลงมือแก้

nn

WooCommerce Checkout / จ่ายเงินไม่ได้ — WP Doctor Thailand
ปัญหาหน้า Checkout และการจ่ายเงินใน WooCommerce

nn

สาเหตุหลักที่ทำให้ Email ไม่ส่ง

n

WordPress ส่งเมลผ่านฟังก์ชัน wp_mail() ซึ่งอาศัย PHP mail() ของ Hosting เป็นค่าเริ่มต้น Hosting ส่วนใหญ่จำกัด หรือบล็อกฟังก์ชันนี้เพื่อป้องกัน Spam ทำให้เมลไม่ออก นอกจากนี้ยังมีสาเหตุอื่น ๆ ได้แก่:

n

    n

  • ไม่ได้ตั้งค่า SMTP — PHP mail() ถูก Disable หรือถูกบล็อกโดย Hosting
  • n

  • ไม่มี SPF / DKIM / DMARC — เมลถูก Spam filter ของปลายทางปฏิเสธ
  • n

  • ที่อยู่ From ไม่ตรงโดเมน — เช่น ส่งจาก [email protected] แต่โดเมนเว็บคือ myshop.co.th
  • n

  • Plugin ขัดแย้งกัน — บาง Plugin hooking wp_mail() แล้ว Throw error เงียบ ๆ
  • n

  • WooCommerce Email ถูก Disable ในการตั้งค่า WooCommerce เอง
  • n

  • Email ของลูกค้ากรอกผิด หรือเมลนั้นถูก Bounce ครั้งก่อน
  • n

nn

วิธีตรวจสอบเบื้องต้น

n

ก่อนแก้ไข ให้ตรวจสอบ 3 จุดนี้ก่อน:

n

    n

  • ตรวจสอบการตั้งค่า WooCommerce Email: เข้า WooCommerce → Settings → Emails แล้วคลิก Email แต่ละประเภท ตรวจว่าเปิด Enable อยู่ และอีเมลผู้รับถูกต้อง
  • n

  • ทดสอบส่ง Test Email: ในหน้า Email นั้น คลิก “Send test email” แล้วดูว่าเมลถึงหรือไม่ รวมถึงเช็ค Spam folder
  • n

  • ติดตั้ง Plugin Log เมล: ใช้ Plugin เช่น WP Mail Log หรือ Mail Log อื่น ๆ เพื่อดูว่า wp_mail() ถูกเรียกหรือเปล่า และ Return ค่าอะไร
  • n

n

ถ้า Log แสดงว่า wp_mail() ถูกเรียกแต่เมลไม่ถึง แสดงว่าปัญหาอยู่ที่ SMTP หรือ DNS Record ถ้าไม่ถูกเรียกเลย ปัญหาอยู่ที่ WooCommerce หรือ Plugin ขัดแย้ง

nn

สิ่งสำคัญที่ต้องรู้: PHP mail() ที่ Hosting ให้มาไม่เหมาะกับการส่ง Transactional Email เพราะขาด Authentication ทำให้เมลโดน Spam filter จับได้บ่อย วิธีแก้ที่ได้ผลถาวรคือเปลี่ยนไปใช้ SMTP ผ่าน Plugin

nn

แก้ปัญหา WooCommerce — WP Doctor Thailand
ตรวจสอบและแก้ปัญหาระบบร้านค้า WooCommerce

nn

วิธีแก้ไขทีละขั้นตอน

n

ขั้นที่ 1 — ติดตั้ง SMTP Plugin

n

ติดตั้ง Plugin เช่น WP Mail SMTP หรือ FluentSMTP (ฟรีทั้งคู่) แล้วตั้งค่าส่งผ่าน SMTP Server จริง เช่น:

n

    n

  • Gmail SMTP (ผ่าน Google App Password หรือ OAuth)
  • n

  • SendGrid / Mailgun / Brevo (รองรับปริมาณเมลสูง เหมาะกับร้านค้า)
  • n

  • SMTP ของ Hosting (เช่น mail.yourdomain.com port 465 SSL)
  • n

n

หลังตั้งค่า ให้กด “Send Test Email” ใน Plugin นั้นเพื่อยืนยันว่าเชื่อมต่อสำเร็จ

nn

ขั้นที่ 2 — ตั้งค่า From Name และ From Email ให้ตรงโดเมน

n

ใน WP Mail SMTP ตั้งค่า From Email เป็น [email protected] หรืออีเมลของโดเมนตัวเอง เพราะถ้า From Email ไม่ตรงกับโดเมนที่ส่ง เมลจะถูก Reject หรือตก Spam

nn

ขั้นที่ 3 — เพิ่ม SPF และ DKIM Record ใน DNS

n

เข้า DNS ของโดเมน (ผ่าน Cloudflare, cPanel, หรือ Registrar) แล้วเพิ่ม:

n

    n

  • SPF Record (TXT): v=spf1 include:_spf.google.com ~all (ตัวอย่างสำหรับ Gmail SMTP)
  • n

  • DKIM Record: ได้จาก SMTP Provider ที่ใช้ เช่น SendGrid จะให้ CNAME หรือ TXT มาเพิ่ม
  • n

n

DNS อาจใช้เวลา propagate 1–24 ชั่วโมง หลังจากนั้นทดสอบส่งเมลอีกครั้ง

nn

ขั้นที่ 4 — ตรวจสอบ Plugin Conflict

n

ถ้ายังไม่ได้ผล ให้ลอง Deactivate Plugin ทีละตัว โดยเฉพาะ Plugin ที่ Hook กับเมล หรือ Cache Plugin บาง Plugin ขัดกับ wp_mail() เงียบ ๆ โดยไม่มี Error ปรากฏ อ่านเพิ่มเติมเรื่อง Plugin Conflict ใน WooCommerce แก้ยังไง

nn

การป้องกันในระยะยาว

n

    n

  • ใช้ SMTP ที่มี Dashboard Log เมื่อส่งสำเร็จหรือล้มเหลว (SendGrid, Brevo ทำได้)
  • n

  • ตั้ง Alert ให้แอดมินรับเมลสำรองเมื่อ Order ใหม่เข้า
  • n

  • ทดสอบส่ง Test Email หลัง Update WordPress / WooCommerce ทุกครั้ง
  • n

  • ตรวจสอบ Bounce Rate ใน SMTP Dashboard เป็นประจำ
  • n

n

ปัญหาเมลมักเกิดร่วมกับปัญหาอื่น เช่น WooCommerce Order ไม่เข้า หรือ WooCommerce Checkout ไม่ได้ กดสั่งซื้อไม่ทำงาน ซึ่งควรตรวจสอบพร้อมกัน

nn

เมื่อไหร่ควรเรียกผู้เชี่ยวชาญ

n

ถ้าตั้งค่า SMTP แล้วแต่เมลยังไม่ออก DNS Record ถูกต้องแล้วแต่ยัง Spam อยู่ หรือไม่แน่ใจว่าปัญหาอยู่ที่จุดไหน บริการ แก้ปัญหา WooCommerce ของเราตรวจสอบและแก้ไขได้ตั้งแต่ต้นจนจบ รวมถึงการตั้งค่า SMTP, DNS Record และ Log การส่งเมลให้ครบถ้วน

คำถามที่พบบ่อย

WooCommerce ส่งเมลผ่าน PHP mail() ได้ไหม ทำไมต้องใช้ SMTP?

PHP mail() ส่งได้ แต่ขาด Authentication (SPF/DKIM) ทำให้เมลโดน Spam filter ของปลายทางจับบ่อยมาก การใช้ SMTP ผ่าน Plugin เช่น WP Mail SMTP ช่วยให้เมลถึงกล่องรับจริงได้ดีกว่าอย่างเห็นได้ชัด

ติดตั้ง WP Mail SMTP แล้ว Test Email ผ่าน แต่เมล WooCommerce ยังไม่ออก เกิดจากอะไร?

อาจเกิดจาก WooCommerce Email บางประเภทถูก Disable ในหน้า WooCommerce → Settings → Emails ให้เข้าไปเปิดใหม่ หรือตรวจดูว่ามี Plugin อื่น override การส่งเมลอยู่หรือเปล่า

เมลถึงแต่ตก Spam ของลูกค้า แก้ยังไง?

ให้ตรวจสอบว่าโดเมนมี SPF Record และ DKIM Record ครบหรือยัง และ From Email ต้องเป็นอีเมลของโดเมนตัวเองเท่านั้น ไม่ใช่ [email protected] หลังแก้ DNS แล้วรอ propagate และทดสอบใหม่

จะรู้ได้ยังไงว่า wp_mail() ถูกเรียกหรือเปล่า?

ติดตั้ง Plugin เช่น WP Mail Log แล้วดูใน Log จะเห็นว่า WordPress พยายามส่งเมลไปหรือไม่ ถ้าไม่มี Log เลยแสดงว่า WooCommerce ไม่ได้ Trigger เมล ต้องตรวจที่ตั้งค่า WooCommerce ก่อน

อ่านบทความหลักของหมวดนี้ WooCommerce Checkout ไม่ได้ เกิดจากอะไร

บทความอื่นในหมวดนี้

LINE ส่งปัญหา