ปัญหาที่นักพัฒนาเว็บและเจ้าของเว็บไซต์ WordPress พบบ่อยที่สุดปัญหาหนึ่งคือ เมลที่ WordPress ส่งออกไม่ถึงผู้รับ ไม่ว่าจะเป็นอีเมลยืนยันการสมัครสมาชิก การรีเซ็ตรหัสผ่าน หรือการแจ้งเตือนออเดอร์จาก WooCommerce ล้วนหายไปในอากาศ
สาเหตุหลักคือ WordPress ใช้ฟังก์ชัน wp_mail() ซึ่งพึ่งพา PHP mail() ของ Shared Hosting โดยตรง แต่เซิร์ฟเวอร์ส่วนใหญ่จำกัดการใช้งาน PHP mail() เพื่อป้องกัน Spam ทำให้เมลถูกบล็อกหรือตกไปอยู่ใน Junk Mail ของผู้รับ
วิธีแก้ที่ถูกต้องคือตั้งค่า SMTP (Simple Mail Transfer Protocol) ให้ WordPress ส่งเมลผ่าน Mail Server ที่เชื่อถือได้ เช่น Gmail, Outlook หรือ Mail Server ของ Hosting โดยตรง ในบทความนี้จะสอนแบบ Step-by-Step ไม่ต้องแก้โค้ด ใช้ Plugin ทำได้เลย
ทำไม WordPress ถึงส่งเมลไม่ได้?
ก่อนแก้ปัญหา เราต้องเข้าใจสาเหตุก่อน:
- PHP mail() ถูกจำกัด — Shared Hosting หลายเจ้าปิดหรือจำกัด PHP mail() เพราะมักถูกใช้ส่ง Spam
- ไม่มี Authentication — PHP mail() ส่งเมลโดยไม่ยืนยันตัวตน ทำให้ถูก Gmail/Outlook ปฏิเสธ
- ไม่มี SPF/DKIM — เมลที่ส่งจาก PHP mail() มักไม่มี Digital Signature ทำให้ตกไป Spam
- IP ของ Hosting ถูก Blacklist — เซิร์ฟเวอร์ที่มีผู้ใช้ส่ง Spam อาจถูกบล็อก
SMTP แก้ทุกปัญหาข้างต้น เพราะมีการยืนยันตัวตนและใช้ Mail Server ที่น่าเชื่อถือ
เลือก SMTP Provider ที่เหมาะกับคุณ
ก่อนตั้งค่า คุณต้องเลือกว่าจะใช้ SMTP ของใคร:
- Gmail SMTP — ฟรี ส่งได้ 500 เมล/วัน เหมาะกับเว็บขนาดเล็ก ต้องใช้ Gmail Account
- Outlook/Hotmail SMTP — ฟรี ใช้กับ Microsoft Account
- SMTP ของ cPanel Hosting — ใช้ Email Account ที่สร้างใน cPanel ส่งได้ไม่จำกัด แนะนำสุดสำหรับเว็บที่ใช้ Domain ตัวเอง
- SendGrid / Mailgun — บริการ Email API มี Free Tier ส่งได้ 100 เมล/วัน เหมาะกับเว็บที่ส่งเมลเยอะ
ติดตั้ง Plugin WP Mail SMTP
Plugin ที่นิยมและใช้งานง่ายที่สุดคือ WP Mail SMTP by WPForms มีผู้ใช้งานมากกว่า 3 ล้านเว็บไซต์
- เข้า WordPress Admin → Plugins → Add New Plugin
- ค้นหา "WP Mail SMTP"
- คลิก Install Now บน "WP Mail SMTP by WPForms"
- คลิก Activate
- ไปที่ WP Mail SMTP → Settings
ตั้งค่า SMTP ด้วย Email ของ cPanel
วิธีนี้เหมาะที่สุดสำหรับผู้ใช้ Shared Hosting เพราะใช้ Email Account ที่สร้างใน cPanel
ขั้นที่ 1: สร้าง Email Account ใน cPanel
- เข้า cPanel → Email → Email Accounts
- สร้าง Email เช่น
[email protected] - ตั้ง Password ที่แข็งแกร่ง จดรหัสผ่านไว้ใช้ในขั้นต่อไป
ขั้นที่ 2: หา SMTP Server Settings
- ใน cPanel → Email → Email Accounts
- คลิก Connect Devices ข้างชื่อ Email ที่สร้าง
- จด SMTP Server, Port และ Security ที่แสดง
SMTP Server: mail.yourdomain.com
Port (SSL): 465
Port (TLS): 587
Security: SSL/TLS หรือ STARTTLS
Username: [email protected]
Password: รหัสผ่านที่ตั้งไว้
ขั้นที่ 3: ตั้งค่าใน WP Mail SMTP
- ไปที่ WP Mail SMTP → Settings → General
- ใส่ From Email:
[email protected] - ใส่ From Name: ชื่อเว็บไซต์ของคุณ
- เลือก Mailer: Other SMTP
- ใส่ SMTP Host:
mail.yourdomain.com - เลือก Encryption: SSL หรือ TLS
- ใส่ SMTP Port:
465(SSL) หรือ587(TLS) - เปิด Auto TLS
- เปิด Authentication
- ใส่ SMTP Username:
[email protected] - ใส่ SMTP Password: รหัสผ่าน Email
- คลิก Save Settings
ตั้งค่า SMTP ด้วย Gmail (สำหรับผู้ไม่มี Business Email)
ถ้ายังไม่มี Email Hosting ให้ใช้ Gmail ก่อนได้ แต่ต้องสร้าง App Password พิเศษ:
- เข้า myaccount.google.com → Security
- เปิด 2-Step Verification ก่อน (ถ้ายังไม่เปิด)
- ค้นหา App passwords แล้วสร้าง App Password ใหม่
- เลือก App: "Mail", Device: "Other" แล้วตั้งชื่อว่า "WordPress"
- จด App Password ที่ได้ (16 ตัวอักษร)
ในหน้า WP Mail SMTP Settings:
Mailer: Other SMTP
SMTP Host: smtp.gmail.com
Encryption: TLS
SMTP Port: 587
Authentication: เปิด
Username: [email protected]
Password: App Password (ไม่ใช่ Password Gmail ปกติ)
ตรวจสอบว่า WordPress SMTP ทำงานถูกต้อง
หลังตั้งค่าแล้ว ต้องทดสอบก่อนใช้งานจริงเสมอ:
- ไปที่ WP Mail SMTP → Tools → Email Test
- ใส่ Email ปลายทางที่ต้องการทดสอบ
- คลิก Send Email
- รอ 1-2 นาที แล้วตรวจกล่องเมลปลายทาง
ผลที่ควรได้รับ:
✅ Email Test: สำเร็จ (แสดงใน WP Mail SMTP)
✅ ได้รับเมลในกล่อง Inbox ภายใน 2 นาที
✅ ไม่มีเมลตกไปอยู่ใน Spam/Junk
ถ้าล้มเหลว ให้ดู Error Message ที่แสดง:
- Authentication failed → ตรวจสอบ Username/Password
- Connection timeout → ตรวจสอบ Port และ Firewall
- SSL certificate error → ลองเปลี่ยน Port
แก้ปัญหาที่พบบ่อย
Error: "SMTP Error: Could not authenticate"
สาเหตุ: Username หรือ Password ผิด หรือ Gmail ไม่ได้สร้าง App Password
- ตรวจสอบว่าใช้ Email เต็มรูปแบบเป็น Username เช่น
[email protected]ไม่ใช่แค่noreply - สำหรับ Gmail ต้องใช้ App Password ไม่ใช่ Password ปกติ
- ลอง Copy-Paste รหัสผ่านแทนการพิมพ์เอง เพื่อหลีกเลี่ยงตัวอักษรพิเศษผิดพลาด
Error: "Connection timed out"
สาเหตุ: Port ที่เลือกถูก Firewall ของ Hosting บล็อก
- ลองเปลี่ยนจาก Port 465 (SSL) เป็น Port 587 (TLS) หรือกลับกัน
- ติดต่อ Hosting Support เพื่อถามว่า Port ไหนเปิดอยู่
- บาง Hosting บล็อก Port 25 แต่เปิด Port 465 และ 587
Error: "SSL: Certificate verify failed"
สาเหตุ: SSL Certificate ของ Mail Server ไม่ถูกต้องหรือหมดอายุ
- ลองปิด SSL แล้วใช้ TLS แทน
- ตรวจสอบว่า SMTP Host ที่ใส่ถูกต้อง ตรงกับ SSL Certificate
- ใน WP Mail SMTP มีตัวเลือก "Disable SSL Verification" ให้ทดสอบชั่วคราว (ไม่แนะนำใช้ถาวร)
เมลส่งสำเร็จแต่ตกไป Spam
สาเหตุ: Domain ยังไม่มี SPF/DKIM/DMARC Record ครบถ้วน
- ตั้งค่า SPF Record ใน DNS:
v=spf1 include:yourmailserver.com ~all - เปิด DKIM ใน cPanel → Email → Email Deliverability
- ตั้งค่า DMARC Record:
v=DMARC1; p=none; rua=mailto:[email protected]
WooCommerce ส่งเมล Order ไม่ได้
สาเหตุ: WooCommerce ใช้ wp_mail() ซึ่งต้องผ่าน WP Mail SMTP ด้วย
- ตรวจสอบว่าตั้งค่า WP Mail SMTP ถูกต้องแล้ว ทดสอบส่ง Test Email ก่อน
- ไปที่ WooCommerce → Settings → Emails ตรวจว่า Email Notifications เปิดอยู่
- ทดสอบโดยสร้าง Test Order ใน WooCommerce
คำถามที่พบบ่อย (FAQ)
Q: ต้องจ่ายเงินซื้อ WP Mail SMTP Pro ไหม?
A: ไม่จำเป็น Version ฟรีรองรับ SMTP ของ cPanel, Gmail, Outlook และ Mailgun ได้ครบ ส่วน Pro จะมีฟีเจอร์เพิ่มเติมเช่น Email Log, Notification ฯลฯ ซึ่งส่วนใหญ่ไม่จำเป็นสำหรับเว็บทั่วไป
Q: ถ้าใช้ Gmail SMTP แล้วส่งเมลเยอะจะเป็นอะไรไหม?
A: Gmail มีลิมิต 500 เมล/วันสำหรับ Gmail ปกติ และ 2,000 เมล/วันสำหรับ Google Workspace ถ้าส่งเมลเกินลิมิต Gmail จะบล็อกชั่วคราว 24 ชั่วโมง ถ้าเว็บมี Traffic เยอะแนะนำให้ใช้ SendGrid หรือ Mailgun ที่ออกแบบมาสำหรับ Transactional Email โดยเฉพาะ
Q: ตั้งค่า SMTP แล้วเมลยังตกไป Spam อยู่ ต้องทำอะไรเพิ่ม?
A: ต้องตั้งค่า SPF, DKIM และ DMARC ใน DNS ของ Domain ด้วย SPF บอกว่า Mail Server ไหนได้รับอนุญาตส่งเมลแทน Domain คุณ DKIM เพิ่ม Digital Signature ยืนยันว่าเมลไม่ถูกดัดแปลง และ DMARC กำหนด Policy ถ้าการยืนยันล้มเหลว ทั้งสามอย่างทำงานร่วมกันทำให้เมลน่าเชื่อถือมากขึ้น