ตั้งค่า SMTP สำหรับ WordPress บน Cloud VPS (ส่ง Email ไม่เข้า Spam)

ทำไมต้องตั้งค่า SMTP สำหรับ WordPress?

ปัญหา Email จาก WordPress เข้า Spam Folder เป็นเรื่องที่พบบ่อยมากเมื่อใช้ Cloud VPS เพราะ WordPress ส่ง Email ผ่านฟังก์ชัน wp_mail() ที่ใช้ PHP mail() โดยตรง ซึ่งมักถูก Email Provider ปฏิเสธหรือทำให้เข้า Spam เนื่องจากขาด Authentication ที่ถูกต้อง การตั้งค่า SMTP (Simple Mail Transfer Protocol) ช่วยแก้ปัญหานี้ได้อย่างมีประสิทธิภาพ บทความนี้จะแนะนำวิธีตั้งค่า SMTP บน Cloud VPS ของ de.co.th เพื่อให้ Email จาก WordPress ไปถึง Inbox ของผู้รับอย่างมีประสิทธิภาพ

ข้อดีของการใช้ SMTP สำหรับ WordPress

  • Email ไม่เข้า Spam — SMTP ส่ง Email ผ่านการยืนยันตัวตน (Authentication) ทำให้ Email Provider มั่นใจว่า Email มาจากแหล่งที่น่าเชื่อถือ
  • Delivery Rate สูง — ส่วนใหญ่ Email จะไปถึง Inbox ไม่ใช่ Spam Folder ทำให้ลูกค้าและผู้ใช้จำนวนมากรับข้อมูลได้
  • ดูแลได้ง่าย — สามารถตรวจสอบสถานะการส่ง Email ได้ และดีบัก ปัญหา Email ได้
  • รองรับ Bulk Email — สำหรับเว็บไซต์ที่ส่ง Email จำนวนมาก สามารถจำกัดอัตราการส่งได้เพื่อหลีกเลี่ยง Rate Limiting
  • ทำงานกับ Email Service ต่างๆ — สามารถใช้ Gmail, Mailgun, SendGrid, Amazon SES, Postmark ได้

ความแตกต่างระหว่าง PHP mail() และ SMTP

PHP mail() ส่ง Email ผ่าน Local Mail Server (Sendmail หรือ Postfix) บน Cloud VPS โดยตรง ซึ่งมักไม่มี Authentication ดังนั้น Email Provider อาจปฏิเสธหรือทำให้เข้า Spam ได้ แต่ SMTP ส่ง Email ผ่าน SMTP Server ที่ตั้งค่าแล้ว (เช่น Gmail SMTP, Mailgun, SendGrid) ซึ่งมี Authentication และ IP Reputation ที่ดี ทำให้ Email ถูก Accept โดย Email Provider ที่ปลายทาง

ขั้นตอนที่ 1: ติดตั้ง WP Mail SMTP Plugin

วิธีที่ง่ายและนิยมที่สุดคือใช้ WP Mail SMTP Plugin ซึ่งเป็น Plugin ยอดนิยมที่รองรับ SMTP ของหลายบริการ เพื่อติดตั้ง ให้ใช้ WP-CLI หรือเข้า WordPress Admin Dashboard ติดตั้งผ่าน UI:

# ติดตั้ง Plugin ผ่าน WP-CLI
wp plugin install wp-mail-smtp --activate

หรือติดตั้งจาก WordPress Admin ดังนี้:

  1. เข้า WordPress Admin Dashboard > Plugins > Add New
  2. ค้นหา WP Mail SMTP (โดย WP Mail SMTP)
  3. คลิก Install Now แล้วคลิก Activate
  4. ไปที่ WP Mail SMTP > Settings เพื่อตั้งค่า

ขั้นตอนที่ 2: เลือก Mailer ที่ต้องการ

หลังติดตั้งแล้ว เข้าไปที่ WP Mail SMTP > Settings คุณจะเห็นตัวเลือก Mailer ต่างๆ (Mailer คือบริการ SMTP ที่จะใช้ส่ง Email):

  • Gmail — เหมาะสำหรับเว็บขนาดเล็ก แต่จำกัดการส่ง ~500 Email/day
  • Mailgun — เหมาะสำหรับเว็บขนาดกลาง มีส่วนฟรี
  • SendGrid — เหมาะสำหรับเว็บขนาดกลาง-ใหญ่ มีส่วนฟรี
  • Amazon SES — ประสบการณ์ราคาถูก ต้องมี AWS Account
  • Postmark — คุณภาพสูง เหมาะสำหรับเว็บเชิงพาณิชย์

ขั้นตอนที่ 3: ตั้งค่า SMTP สำหรับ Gmail

หากต้องการใช้ Gmail สำหรับส่ง Email ของ WordPress ให้ทำตามขั้นตอนนี้:

3.1 สร้าง App Password ใน Google Account

  1. ไปที่ Google Account (myaccount.google.com)
  2. คลิก Security บนเมนูซ้าย
  3. เปิด 2-Step Verification (ถ้ายังไม่เปิด)
  4. ค้นหา App passwords และคลิก
  5. เลือก Mail และ Windows Computer (หรือ Other)
  6. คลิก Generate เพื่อสร้าง Password
  7. คัดลอก Password 16 ตัว (ไม่มีช่องว่าง) เก็บไว้

3.2 ตั้งค่าใน WP Mail SMTP

  1. ใน WP Mail SMTP Settings เลือก Mailer = Gmail
  2. ใส่ค่าต่อไปนี้:
    • SMTP Host: smtp.gmail.com
    • SMTP Port: 587
    • Encryption: TLS
    • Username: ที่อยู่ Email Gmail ของคุณ (เช่น [email protected])
    • Password: App Password ที่สร้างมา (16 ตัว)
  3. คลิก Save Settings

ขั้นตอนที่ 4: ตั้งค่า SMTP สำหรับ Transactional Email Service

สำหรับเว็บไซต์ที่ส่ง Email จำนวนมาก (เช่น Shop ที่ส่ง Order Confirmation หลายฉบับทุกวัน) แนะนำให้ใช้ Transactional Email Service เช่น Mailgun, SendGrid, Amazon SES หรือ Postmark เนื่องจากมี Delivery Rate สูง มีระบบติดตามสถานะการส่ง และรองรับการส่งจำนวนมาก

ตัวอย่าง: ตั้งค่า Mailgun SMTP

  1. สมัคร Mailgun (มีส่วนฟรี 100 Email/day)
  2. สร้าง Domain (เช่น mg.example.com)
  3. ใน WP Mail SMTP เลือก Mailer = Mailgun
  4. ใส่ค่าต่อไปนี้:
    • SMTP Host: smtp.mailgun.org
    • SMTP Port: 587
    • Encryption: TLS
    • Username: [email protected] (เปลี่ยน example.com เป็น Domain ของคุณ)
    • Password: SMTP Password จาก Mailgun (หาได้จาก Mailgun Dashboard)
  5. คลิก Save Settings

ตัวอย่าง: ตั้งค่า Amazon SES SMTP

SMTP Host: email-smtp.ap-southeast-1.amazonaws.com
(เปลี่ยน region ตามอื่นๆ ของคุณ เช่น us-east-1, eu-west-1)
Port: 587
Encryption: TLS
Username: AKIAIOSFODNN7EXAMPLE (SMTP Username จาก AWS SES)
Password: BmE7Ynqq... (SMTP Password จาก AWS SES)

ขั้นตอนที่ 5: ตั้งค่า SMTP ผ่าน wp-config.php (ขั้นสูง)

สำหรับความปลอดภัยที่ดีขึ้น แนะนำให้ตั้งค่า SMTP ผ่าน wp-config.php แทนการใส่ใน Plugin Settings (ซึ่งจัดเก็บใน Database) วิธีนี้จะเก็บข้อมูล Password ไว้ในไฟล์ wp-config.php ซึ่งสามารถจำกัดการเข้าถึงได้:

// เพิ่มในไฟล์ wp-config.php (ก่อน 'That's all, stop editing!')
define('WPMS_ON', true);
define('WPMS_SMTP_HOST', 'smtp.mailgun.org');
define('WPMS_SMTP_PORT', 587);
define('WPMS_SSL', 'tls');
define('WPMS_SMTP_AUTH', true);
define('WPMS_SMTP_USER', '[email protected]');
define('WPMS_SMTP_PASS', 'your-smtp-password-here');
define('WPMS_MAIL_FROM', '[email protected]');
define('WPMS_MAIL_FROM_NAME', 'Your Site Name');

ขั้นตอนที่ 6: ทดสอบการส่ง Email

หลังตั้งค่าเสร็จ ทดสอบโดยเข้าไปที่ WP Mail SMTP > Tools > Email Test ใส่ Email ทดสอบ (เช่น Email ของคุณ) แล้วคลิก Send Test Email ตรวจสอบว่าได้รับ Email ใน Inbox ไม่ใช่ Spam:

  1. เข้า WordPress Admin > WP Mail SMTP > Tools
  2. ใส่ Email ของคุณในช่อง “Send test email to:”
  3. คลิก Send Test Email
  4. ตรวจสอบว่าได้รับ Email และอ่านข้อมูลในหน้า Log

ขั้นตอนที่ 7: ตั้งค่า SPF, DKIM และ DMARC

เพื่อเพิ่มความน่าเชื่อถือให้ Email อีกขั้น ควรตั้งค่า SPF, DKIM และ DMARC ใน DNS ของโดเมนของคุณ:

SPF (Sender Policy Framework)

SPF บอกให้ Email Server รู้ว่า SMTP Server ไหนที่ได้รับอนุญาตให้ส่ง Email จากโดเมนของคุณ เพิ่ม SPF Record ใน DNS ของคุณ:

v=spf1 include:mailgun.org include:sendgrid.net ~all
(เปลี่ยนตามบริการ Email ที่คุณใช้)

DKIM (DomainKeys Identified Mail)

DKIM เป็นลายเซ็นดิจิทัลสำหรับ Email เพื่อพิสูจน์ว่า Email มาจากเจ้าของโดเมนจริง ๆ คุณจะได้ DKIM Public Key จากบริการ SMTP ที่ใช้ แล้วเพิ่มใน DNS ของคุณ

DMARC (Domain-based Message Authentication)

DMARC บอกให้ Email Server รู้ว่าจะทำอย่างไรกับ Email ที่ SPF/DKIM ไม่ผ่าน เพิ่ม DMARC Record ใน DNS:

v=DMARC1; p=quarantine; rua=mailto:[email protected]

ปัญหาทั่วไปและการแก้ไข

Email ยังคงเข้า Spam

  • ตรวจสอบ SPF, DKIM และ DMARC Record ใน DNS
  • ดูว่า Email Address ที่ส่ง (From Address) ตรงกับโดเมนของคุณหรือไม่
  • ลองใช้บริการ SMTP อื่น (Mailgun, SendGrid แทน Gmail)
  • ตรวจสอบ Email Headers ใน Spam Folder

ข้อผิดพลาด “SMTP Connection Refused”

  • ตรวจสอบ SMTP Host ถูกต้องหรือไม่
  • ตรวจสอบ SMTP Port (ส่วนใหญ่ 587 สำหรับ TLS)
  • ลองปิด Firewall หรือ Security Plugin ชั่วคราว
  • ติดต่อ Hosting Provider เพื่อตรวจสอบว่า Outbound Port 587 เปิดใช้งานหรือไม่

ตัวเลือก SMTP ฟรีที่แนะนำสำหรับ WordPress

  • Mailgun — 100 Email/day ฟรี ตัวเต็ม
  • SendGrid — 100 Email/day ฟรี ตัวเต็ม
  • Gmail SMTP — ~500 Email/day ฟรี (จำกัด) แต่ดีสำหรับเว็บเล็ก
  • Amazon SES — 62,000 Email/month ฟรี ในปีแรก

สรุป

การตั้งค่า SMTP สำหรับ WordPress บน Cloud VPS ของ de.co.th ช่วยแก้ปัญหา Email เข้า Spam ได้อย่างมีประสิทธิภาพ ใช้ WP Mail SMTP Plugin ร่วมกับ SMTP Service ที่น่าเชื่อถือ (Mailgun, SendGrid, Amazon SES หรือ Gmail) และอย่าลืมตั้งค่า SPF, DKIM และ DMARC เพื่อเพิ่มความน่าเชื่อถือให้ Email ด้วย ทำตามขั้นตอนเหล่านี้อย่างครบถ้วน Email จากเว็บไซต์ของคุณจะไปถึง Inbox ของผู้ใช้อย่างมีประสิทธิภาพและเสริมสร้างความเชื่อมั่น