วิธีตั้งค่า WordPress SMTP Email ให้ส่งเมลได้จริง

แก้ปัญหา WordPress ส่งเมลไม่ออก ด้วย Plugin WP Mail SMTP ตั้งค่าง่าย ไม่ต้องแตะ Server

วิธีตั้งค่า WordPress SMTP Email ให้ส่งเมลได้จริง

ปัญหาที่นักพัฒนาเว็บและเจ้าของเว็บไซต์ 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 ถึงส่งเมลไม่ได้?

ก่อนแก้ปัญหา เราต้องเข้าใจสาเหตุก่อน:

SMTP แก้ทุกปัญหาข้างต้น เพราะมีการยืนยันตัวตนและใช้ Mail Server ที่น่าเชื่อถือ

เลือก SMTP Provider ที่เหมาะกับคุณ

ก่อนตั้งค่า คุณต้องเลือกว่าจะใช้ SMTP ของใคร:

แนะนำ: ถ้าคุณมี Email Hosting กับ cPanel แล้ว ให้ใช้ SMTP ของ cPanel เลย เพราะใช้ Domain เดียวกับเว็บ ทำให้เมลน่าเชื่อถือกว่า

ติดตั้ง Plugin WP Mail SMTP

Plugin ที่นิยมและใช้งานง่ายที่สุดคือ WP Mail SMTP by WPForms มีผู้ใช้งานมากกว่า 3 ล้านเว็บไซต์

  1. เข้า WordPress Admin → Plugins → Add New Plugin
  2. ค้นหา "WP Mail SMTP"
  3. คลิก Install Now บน "WP Mail SMTP by WPForms"
  4. คลิก Activate
  5. ไปที่ WP Mail SMTP → Settings

ตั้งค่า SMTP ด้วย Email ของ cPanel

วิธีนี้เหมาะที่สุดสำหรับผู้ใช้ Shared Hosting เพราะใช้ Email Account ที่สร้างใน cPanel

ขั้นที่ 1: สร้าง Email Account ใน cPanel

  1. เข้า cPanel → Email → Email Accounts
  2. สร้าง Email เช่น [email protected]
  3. ตั้ง Password ที่แข็งแกร่ง จดรหัสผ่านไว้ใช้ในขั้นต่อไป

ขั้นที่ 2: หา SMTP Server Settings

  1. ใน cPanel → Email → Email Accounts
  2. คลิก Connect Devices ข้างชื่อ Email ที่สร้าง
  3. จด 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

  1. ไปที่ WP Mail SMTP → Settings → General
  2. ใส่ From Email: [email protected]
  3. ใส่ From Name: ชื่อเว็บไซต์ของคุณ
  4. เลือก Mailer: Other SMTP
  5. ใส่ SMTP Host: mail.yourdomain.com
  6. เลือก Encryption: SSL หรือ TLS
  7. ใส่ SMTP Port: 465 (SSL) หรือ 587 (TLS)
  8. เปิด Auto TLS
  9. เปิด Authentication
  10. ใส่ SMTP Username: [email protected]
  11. ใส่ SMTP Password: รหัสผ่าน Email
  12. คลิก Save Settings
Tip: ถ้าไม่แน่ใจ SMTP Host ให้ลองใช้ IP ของ cPanel แทน Domain ชั่วคราวเพื่อทดสอบ

ตั้งค่า SMTP ด้วย Gmail (สำหรับผู้ไม่มี Business Email)

ถ้ายังไม่มี Email Hosting ให้ใช้ Gmail ก่อนได้ แต่ต้องสร้าง App Password พิเศษ:

  1. เข้า myaccount.google.com → Security
  2. เปิด 2-Step Verification ก่อน (ถ้ายังไม่เปิด)
  3. ค้นหา App passwords แล้วสร้าง App Password ใหม่
  4. เลือก App: "Mail", Device: "Other" แล้วตั้งชื่อว่า "WordPress"
  5. จด 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 ปกติ)
หมายเหตุ: Gmail จำกัดการส่งเมล 500 ฉบับ/วัน ถ้าเว็บมีการส่งเมลเยอะ แนะนำให้ใช้ SMTP ของ Hosting หรือ SendGrid แทน

ตรวจสอบว่า WordPress SMTP ทำงานถูกต้อง

หลังตั้งค่าแล้ว ต้องทดสอบก่อนใช้งานจริงเสมอ:

  1. ไปที่ WP Mail SMTP → Tools → Email Test
  2. ใส่ Email ปลายทางที่ต้องการทดสอบ
  3. คลิก Send Email
  4. รอ 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
Tip: ส่งทดสอบไปยัง Gmail และ Hotmail ทั้งคู่ เพราะแต่ละ Provider กรอง Spam ต่างกัน ถ้าทั้งคู่ได้รับแสดงว่าตั้งค่าถูกต้อง

แก้ปัญหาที่พบบ่อย

Error: "SMTP Error: Could not authenticate"

สาเหตุ: Username หรือ Password ผิด หรือ Gmail ไม่ได้สร้าง App Password

Error: "Connection timed out"

สาเหตุ: Port ที่เลือกถูก Firewall ของ Hosting บล็อก

Error: "SSL: Certificate verify failed"

สาเหตุ: SSL Certificate ของ Mail Server ไม่ถูกต้องหรือหมดอายุ

เมลส่งสำเร็จแต่ตกไป Spam

สาเหตุ: Domain ยังไม่มี SPF/DKIM/DMARC Record ครบถ้วน

WooCommerce ส่งเมล Order ไม่ได้

สาเหตุ: WooCommerce ใช้ wp_mail() ซึ่งต้องผ่าน WP Mail SMTP ด้วย

คำถามที่พบบ่อย (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 ถ้าการยืนยันล้มเหลว ทั้งสามอย่างทำงานร่วมกันทำให้เมลน่าเชื่อถือมากขึ้น