Trong quá trình làm website WordPress cho khách và cả website cá nhân, mình gặp khá nhiều trường hợp web không gửi được mail: từ mail liên hệ, đơn hàng WooCommerce cho tới email reset mật khẩu. Cài plugin SMTP thì nhanh thật, nhưng dùng lâu mới thấy nhược điểm: web nặng hơn, phụ thuộc plugin, có lúc update là lỗi hoặc xung đột.
Sau một thời gian tìm hiểu và thử nghiệm, mình chọn cách cấu hình gửi email SMTP trực tiếp bằng code trong WordPress. Cách này nhẹ, chủ động, dễ debug và đặc biệt là không cần cài thêm bất kỳ plugin nào. Chỉ cần thêm vài dòng code vào functions.php (hoặc file riêng), là email gửi đi ổn định, hạn chế vào spam rõ rệt.
Trong bài viết này, mình sẽ chia sẻ lại cách gửi email SMTP trong WordPress không dùng plugin, kèm giải thích từng phần để bạn dễ hiểu và dễ áp dụng, kể cả khi bạn không phải là dân code chuyên sâu. Vô bài nha!
SMTP là gì?
SMTP (Simple Mail Transfer Protocol) là giao thức chuẩn dựa trên TCP/IP, được sử dụng để truyền tải thư điện tử (email) trên Internet. Đây là nền tảng cốt lõi giúp email có thể được gửi từ máy chủ này sang máy chủ khác một cách thống nhất và ổn định.
SMTP lần đầu được định nghĩa vào năm 1982 theo tiêu chuẩn RFC 821, và sau đó được cập nhật, mở rộng thành RFC 5321 vào năm 2008. Phiên bản này bổ sung nhiều cơ chế xác thực và bảo mật, trở thành chuẩn SMTP mở rộng được sử dụng phổ biến cho đến ngày nay.

Hiện nay, hầu hết máy chủ thư (mail server) và mail transfer agent (MTA) đều sử dụng SMTP để gửi và nhận email. Ngay cả các hệ thống email độc quyền như Microsoft Exchange, IBM Notes, hay các dịch vụ webmail phổ biến như Outlook.com, Gmail, Yahoo! Mail… dù có thể dùng giao thức riêng trong nội bộ, nhưng khi giao tiếp email ra bên ngoài hệ thống, tất cả đều bắt buộc sử dụng SMTP.
SMTP chính là giao thức tiêu chuẩn giúp email được gửi đi trên Internet, bất kể bạn đang dùng website WordPress, email doanh nghiệp hay các dịch vụ mail phổ biến hiện nay.
Cấu hình thông tin SMTP: Truy cập phần cài đặt SMTP Server mà nhà cung cấp cung cấp. Bạn cần nhập các thông tin cơ bản như:
- SMTP Server: Ví dụ smtp.gmail.com
- Port: Thông thường là 25, 465 (SSL) hoặc 587 (TLS)
- Mã hóa: Chọn SSL/TLS để bảo mật đường truyền
- Tên người dùng và mật khẩu: Là thông tin đăng nhập mail (pass là mật khẩu ứng dụng tạo trong mail, khác pass mail)
Hướng dẫn gửi email SMTP trong WordPress không dùng plugin
Mỗi nhà cung cấp dịch vụ email sẽ có cách cấu hình SMTP khác nhau. Trong phạm vi bài viết này, mình sẽ hướng dẫn cấu hình SMTP với Gmail – dịch vụ email phổ biến, dễ dùng và được rất nhiều website WordPress lựa chọn.

Dưới đây là những thông tin SMTP Gmail bạn cần chuẩn bị trước khi cấu hình. Mình khuyên bạn nên chuẩn bị sẵn để quá trình cài đặt diễn ra nhanh và không bị gián đoạn.
Bước 1: Chuẩn bị thông tin SMTP Gmail
Để gửi email qua Gmail bằng SMTP, bạn cần các thông tin sau:
-
SMTP Server:
smtp.gmail.com -
SMTP Username: Địa chỉ email Gmail dùng để gửi mail
(ví dụ:thietkewebkw@gmail.com) -
SMTP Password: Mật khẩu ứng dụng (App Password) do Gmail cấp
(không nên dùng mật khẩu Gmail thông thường) -
SMTP Port: 465
-
Bảo mật: SSL (bắt buộc)
Hiện tại Gmail không còn cho phép đăng nhập SMTP bằng mật khẩu thường, bạn cần bật xác minh 2 bước và tạo App Password để gửi mail ổn định, tránh lỗi xác thực hoặc bị Google chặn.
Bạn vào truy cập vào hosting rồi tới file wp-config.php dán đoạn code ở dưới vào.
Lưu ý: Thêm trên dòng /* That’s all, stop editing! Happy publishing. */

/** SMTP Gmail - Khaweb */
define('KHAWEB_SMTP_HOST', 'smtp.gmail.com');
define('KHAWEB_SMTP_PORT', 465);
define('KHAWEB_SMTP_USER', 'yourgmail@gmail.com');
define('KHAWEB_SMTP_PASS', 'your_app_password');
define('KHAWEB_SMTP_FROM', 'yourgmail@gmail.com');
define('KHAWEB_SMTP_FROM_NAME', 'Ten Thuong Hieu Cua Ban');
define('KHAWEB_SMTP_SECURE', 'ssl');
📌 Xem thêm: Hướng dẫn tạo mật khẩu ứng dụng cho Gmail
Bước 2: Thêm code SMTP bảo mật trong functions.php
Bạn truy cập vào theme đang active rồi tới file functions.php để dán code này vào là được.
function khaweb_secure_smtp_setup( $phpmailer ) {
// Chỉ chạy ở frontend & khi có SMTP config
if (
is_admin() ||
! defined('KHAWEB_SMTP_USER') ||
! defined('KHAWEB_SMTP_PASS')
) {
return;
}
// Ép kiểu an toàn
if ( ! $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) {
return;
}
$phpmailer->isSMTP();
$phpmailer->Host = KHAWEB_SMTP_HOST;
$phpmailer->SMTPAuth = true;
$phpmailer->Port = KHAWEB_SMTP_PORT;
$phpmailer->Username = KHAWEB_SMTP_USER;
$phpmailer->Password = KHAWEB_SMTP_PASS;
$phpmailer->SMTPSecure = KHAWEB_SMTP_SECURE;
// From phải trùng SMTP user (tránh spam)
$phpmailer->setFrom(
KHAWEB_SMTP_FROM,
KHAWEB_SMTP_FROM_NAME,
false
);
// Disable debug trên production
$phpmailer->SMTPDebug = 0;
}
add_action( 'phpmailer_init', 'khaweb_secure_smtp_setup' );
Như vậy là xong. Xem kết quả ở dưới nha!

Kết luận
Việc cấu hình SMTP trực tiếp bằng code giúp WordPress gửi email ổn định hơn, hạn chế tình trạng thất lạc mail và rơi vào spam. Tuy nhiên, để đảm bảo an toàn và dễ bảo trì lâu dài, không nên hard-code thông tin SMTP trực tiếp trong theme hoặc plugin.
Phiên bản cấu hình bảo mật hơn bằng cách tách thông tin nhạy cảm sang wp-config.php, sử dụng prefix rõ ràng và kiểm soát điều kiện thực thi giúp:
-
Giảm rủi ro lộ email, mật khẩu ứng dụng
-
Dễ dàng thay đổi cấu hình khi cần
-
Giữ code gọn, chuẩn WordPress và thân thiện với môi trường production
Tóm lại, nếu bạn là người có kiến thức kỹ thuật và muốn tối ưu bảo mật, hiệu suất và khả năng kiểm soát, việc cấu hình SMTP bằng code theo hướng an toàn là một giải pháp hợp lý. Với các website có nhu cầu gửi email lớn hoặc cần theo dõi log chi tiết, bạn nên cân nhắc sử dụng SMTP service chuyên dụng để đảm bảo tính ổn định và khả năng mở rộng.
Hy vọng qua hướng dẫn này, bạn sẽ áp dụng thành công để giúp website thân thiện hơn, mượt mà hơn và tạo ấn tượng tốt hơn với người dùng. Nếu thấy nội dung có giá trị, đừng quên đánh giá 5 sao để tiếp thêm động lực cho KHAWEB tiếp tục chia sẻ nhiều bài viết chất lượng hơn.




