คำตอบสั้น ๆ: ตั้งค่า WordPress ให้ส่งอีเมลผ่าน SMTP ที่ยืนยันตัวตนด้วยปลั๊กอิน WP Mail SMTP เพื่อให้อีเมลแจ้งเตือนและฟอร์มติดต่อส่งถึงผู้รับ ไม่ตกไปอยู่ใน Spam
คู่มือนี้อธิบาย WordPress ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
โดยค่าเริ่มต้น WordPress ส่งอีเมล เช่น อีเมลรีเซ็ตรหัสผ่าน อีเมลแจ้งเตือนคำสั่งซื้อของ WooCommerce หรืออีเมลจากฟอร์มติดต่อ ผ่านฟังก์ชัน mail() ของ PHP ซึ่งส่งโดยไม่มีการยืนยันตัวตน อีเมลจึงมักไม่ผ่านการตรวจ SPF และ DMARC ของผู้รับ ทำให้เข้า Spam หรือถูกปฏิเสธ และบางเซิร์ฟเวอร์ไม่ได้ติดตั้ง Mail Server ไว้เลย อีเมลจึงไม่ถูกส่งออกไปเลย
ทางแก้ที่แนะนำคือให้ WordPress ส่งอีเมลผ่าน SMTP ของบัญชีอีเมลจริงที่ยืนยันตัวตนด้วยชื่อผู้ใช้และรหัสผ่าน คู่มือนี้ใช้ปลั๊กอิน WP Mail SMTP เป็นตัวอย่าง และกล่าวถึง FluentSMTP ซึ่งเป็นทางเลือกฟรีอีกตัว
สิ่งที่ต้องเตรียม
- สิทธิ์ Administrator ใน WordPress
- บัญชีอีเมลที่จะใช้ส่ง เช่น
[email protected]พร้อมรหัสผ่าน ควรสร้างบัญชีเฉพาะสำหรับเว็บไซต์ ดูวิธีสร้างที่ สร้างบัญชีอีเมลบน Plesk หรือ บน DirectAdmin - ชื่อเซิร์ฟเวอร์ SMTP ตามที่ผู้ให้บริการอีเมลแจ้ง ในคู่มือนี้ใช้
mail.example.comเป็นตัวอย่าง - SPF Record ของโดเมนที่ครอบคลุมเซิร์ฟเวอร์ SMTP ที่ใช้ ดู ตั้งค่า SPF, DKIM และ DMARC
ขั้นตอนที่ 1: ติดตั้งปลั๊กอิน
- ใน
/wp-adminไปที่ Plugins > Add New Plugin - ค้นหา WP Mail SMTP (ผู้พัฒนาคือ WP Mail SMTP by WPForms)
- คลิก Install Now แล้วคลิก Activate
หลังเปิดใช้งาน ปลั๊กอินจะเปิด Setup Wizard ให้ สามารถใช้ Wizard หรือกดออกแล้วไปตั้งค่าที่เมนู WP Mail SMTP > Settings ก็ได้ ติดตั้งปลั๊กอินส่งอีเมลเพียงตัวเดียว เพราะหลายตัวพร้อมกันจะขัดแย้งกัน
ขั้นตอนที่ 2: ตั้งค่า Mailer เป็น Other SMTP
ในหน้า WP Mail SMTP > Settings แท็บ General กำหนดดังนี้
- From Email:
[email protected]ต้องเป็นอีเมลเดียวกับบัญชีที่ใช้ยืนยันตัวตน ติ๊ก Force From Email เพื่อให้ปลั๊กอินอื่นใช้อีเมลนี้เสมอ - From Name: ชื่อที่ผู้รับเห็น เช่น ชื่อบริษัท
- Mailer: เลือก Other SMTP
- SMTP Host:
mail.example.com - Encryption: SSL คู่กับ SMTP Port
465หรือ TLS คู่กับพอร์ต587 - Auto TLS: เปิดไว้
- Authentication: เปิด
- SMTP Username: ที่อยู่อีเมลเต็ม
- SMTP Password: รหัสผ่านของบัญชีอีเมล
คลิก Save Settings
ขั้นตอนที่ 3 (แนะนำ): เก็บรหัสผ่านไว้ใน wp-config.php
ปลั๊กอินเก็บรหัสผ่านไว้ในฐานข้อมูล ถ้าต้องการไม่ให้รหัสผ่านอยู่ในฐานข้อมูล WP Mail SMTP รองรับการกำหนดค่าด้วยค่าคงที่ใน wp-config.php เพิ่มบรรทัดต่อไปนี้เหนือบรรทัด /* That's all, stop editing! */
define( 'WPMS_ON', true );
define( 'WPMS_MAILER', 'smtp' );
define( 'WPMS_SMTP_HOST', 'mail.example.com' );
define( 'WPMS_SMTP_PORT', 465 );
define( 'WPMS_SSL', 'ssl' );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_USER', '[email protected]' );
define( 'WPMS_SMTP_PASS', 'รหัสผ่านอีเมล' );
define( 'WPMS_SMTP_AUTOTLS', true );
หากใช้พอร์ต 587 ให้เปลี่ยน WPMS_SMTP_PORT เป็น 587 และ WPMS_SSL เป็น 'tls' เมื่อใช้ค่าคงที่แล้ว ช่องในหน้า Settings จะถูกล็อกและแสดงว่าค่ามาจาก wp-config.php
ขั้นตอนที่ 4: ส่งอีเมลทดสอบ
- ไปที่ WP Mail SMTP > Tools แท็บ Email Test
- กรอกอีเมลภายนอกของคุณในช่อง Send To เช่น บัญชี Gmail
- คลิก Send Email
หากสำเร็จ จะมีข้อความว่าส่งอีเมลทดสอบแล้ว และอีเมลจะเข้า Inbox ของผู้รับ หากล้มเหลว ปลั๊กอินจะแสดง Debug log ซึ่งบอกสาเหตุ เช่น เชื่อมต่อไม่ได้ หรือยืนยันตัวตนไม่ผ่าน