SMTP Gmail là cách nhanh và rẻ nhất để website của bạn gửi được mail thật: form liên hệ, OTP, email quên mật khẩu, đơn hàng. Nếu khách điền form mà bạn không nhận được gì, hoặc mail luôn rơi vào Spam, gần như chắc chắn cấu hình gửi mail đang sai. Bài này hướng dẫn bạn cấu hình đúng từ đầu, kèm code và cách xử lý lỗi, theo kinh nghiệm vận hành thật tại InterData.
NỘI DUNG BÀI VIẾT
- SMTP Gmail là gì và vì sao website của bạn cần nó?
- Thông số SMTP Gmail phải nhớ: host, port 465 và 587
- Tạo Mật khẩu ứng dụng Gmail cho SMTP (mới nhất)
- Cấu hình WordPress SMTP bằng plugin WP Mail SMTP
- Gửi mail bằng code PHP và Node.js qua SMTP Gmail
- Khắc phục lỗi gửi mail và mail vào Spam
- Giới hạn của SMTP Gmail và khi nào cần mail server riêng
- Câu hỏi thường gặp (FAQ)
SMTP Gmail là gì và vì sao website của bạn cần nó?
SMTP Gmail là việc dùng máy chủ gửi thư của Google (SMTP.Gmail.com) làm “bưu điện” để website của bạn gửi email ra ngoài. Thay vì để PHP tự gửi qua hàm mail() dễ bị chặn, bạn đẩy email qua hạ tầng của Google đã có sẵn uy tín gửi nhận.
SMTP (Simple Mail Transfer Protocol) là giao thức tiêu chuẩn để truyền email giữa các máy chủ. Khi nói “server mail”, người ta thường ám chỉ chính cái máy chủ chạy SMTP này. Web của bạn chỉ là một SMTP client: nó kết nối tới máy chủ, đăng nhập, rồi nhờ máy chủ gửi hộ.
Vì sao nên dùng? Vì hàm mail() mặc định trên hosting và VPS gửi qua IP lạ, không có SPF/DKIM, gần như chắc chắn vào Spam hoặc bị từ chối. Dùng SMTP Gmail, email đi qua IP của Google, tỷ lệ vào Inbox cao hơn hẳn cho nhu cầu giao dịch nhỏ.
- Trường hợp nên dùng: form liên hệ, mail OTP, email xác nhận đơn hàng, thông báo nội bộ với lưu lượng thấp đến trung bình.
- Điều kiện bắt buộc: tài khoản Gmail/Google Workspace phải bật bảo mật 2 lớp (2-Step Verification) thì mới tạo được Mật khẩu ứng dụng.
- Giới hạn cần biết: Gmail cá nhân chặn khoảng 500 email/ngày, Google Workspace khoảng 2.000 email/ngày. Vượt ngưỡng là bị khóa gửi tạm thời.

Thông số SMTP Gmail phải nhớ: host, port 465 và 587
Phần lớn lỗi cấu hình SMTP đến từ việc chọn sai cặp port và kiểu mã hóa. Dưới đây là thông số chuẩn của Google. Nhớ kỹ: port phải đi đúng với loại mã hóa, không ghép lung tung.
| Thông số | Giá trị | Ghi chú |
|---|---|---|
| SMTP Host | SMTP.Gmail.com | Dùng chung cho cả Gmail và Workspace |
| Port 465 | SSL/TLS (implicit) | Mã hóa ngay khi kết nối. Ổn định, phổ biến trên hosting Việt |
| Port 587 | STARTTLS | Kết nối thường rồi nâng cấp lên TLS. Là chuẩn Google khuyến nghị |
| Username | địa chỉ Gmail đầy đủ | Ví dụ: [email protected] |
| Password | Mật khẩu ứng dụng 16 ký tự | KHÔNG dùng mật khẩu đăng nhập Gmail thường |
Nên chọn port 465 hay 587?
Cả hai đều mã hóa và đều an toàn. Khác biệt nằm ở cách bắt tay TLS. Với PHPMailer và đa số plugin WordPress, port 465 (SSL) thường cắm là chạy. Nếu nhà cung cấp hosting chặn 465, hãy chuyển sang 587 (STARTTLS). Đừng bao giờ dùng port 25 cho Gmail: cổng này hầu hết bị chặn để chống spam.
- Chọn 465 khi: dùng PHPMailer/WordPress trên hosting Việt, muốn cấu hình đơn giản, ít lỗi handshake.
- Chọn 587 khi: 465 bị chặn outbound, hoặc thư viện/khung của bạn mặc định STARTTLS (nhiều SDK Node, Python).
Tạo Mật khẩu ứng dụng Gmail cho SMTP (mới nhất)
Mật khẩu ứng dụng (App Password) là chuỗi 16 ký tự dùng riêng cho ứng dụng bên thứ ba đăng nhập SMTP, thay cho mật khẩu Gmail thường. Google đã ngừng “Less secure app access” từ 2022, nên đây gần như là cách duy nhất ngoài OAuth 2.0 để web của bạn gửi mail qua Gmail.
Điều kiện bắt buộc: tài khoản phải bật bảo mật 2 lớp trước. Nếu chưa bật, mục tạo Mật khẩu ứng dụng sẽ không hiện ra.
- Vào Tài khoản Google → Bảo mật, bật Xác minh 2 bước (2-Step Verification) nếu chưa có.
- Truy cập trang Mật khẩu ứng dụng tại
myaccount.google.com/apppasswords(hoặc tìm “App passwords” trong ô tìm kiếm của trang Tài khoản). - Đặt tên gợi nhớ cho ứng dụng, ví dụ Website WordPress hoặc SMTP Server PHP, rồi bấm Tạo.
- Google hiển thị chuỗi 16 ký tự (4 nhóm 4 ký tự). Sao chép ngay vì nó chỉ hiện một lần.
- Dán chuỗi này vào ô Password trong cấu hình SMTP. Khi nhập vào code, bạn có thể bỏ dấu cách giữa các nhóm.
Lưu ý bảo mật: mỗi ứng dụng nên một Mật khẩu ứng dụng riêng. Khi nghi lộ hoặc nghỉ dùng, vào lại trang này thu hồi mật khẩu đó, các ứng dụng khác không bị ảnh hưởng. Với tài khoản Google Workspace doanh nghiệp, admin có thể đã tắt App Password; khi đó phải dùng OAuth 2.0.
Cấu hình WordPress SMTP bằng plugin WP Mail SMTP
Đây là tình huống phổ biến nhất: website WordPress có form liên hệ (Contact Form 7, WPForms) nhưng khách gửi mà bạn không nhận được mail. Nguyên nhân thường là WordPress đang dùng hàm wp_mail() qua PHP mail, bị nhà cung cấp chặn hoặc bị lọc spam. Giải pháp là ép WordPress gửi qua SMTP Gmail bằng plugin WP Mail SMTP.
- Vào Plugins → Cài mới, tìm WP Mail SMTP, cài đặt và kích hoạt.
- Mở WP Mail SMTP → Settings. Phần Mailer chọn Other SMTP.
- Điền
SMTP.Gmail.com, Encryption chọn SSL, Port 465 (hoặc TLS + 587). - Bật Authentication, nhập SMTP Username là địa chỉ Gmail, SMTP Password là Mật khẩu ứng dụng 16 ký tự.
- Đặt From Email trùng đúng địa chỉ Gmail đã dùng, đặt From Name là tên thương hiệu.
- Lưu, sang tab Email Test gửi thử về một địa chỉ khác để xác nhận.
Sai lầm hay gặp khi cấu hình WordPress SMTP: đặt From Email khác với tài khoản Gmail đăng nhập. Gmail sẽ ghi đè hoặc từ chối, khiến mail không đi. Luôn để From Email khớp username, trừ khi bạn đã thêm và xác minh địa chỉ “Send mail as” trong Gmail.

Gửi mail bằng code PHP và Node.js qua SMTP Gmail
Khi bạn tự code chức năng gửi OTP hoặc quên mật khẩu, đừng dùng hàm mail() thuần. Hãy dùng thư viện SMTP chuẩn: PHPMailer cho PHP, Nodemailer cho Node.js. Hai ví dụ dưới đây gửi mail code php và Node trực tiếp qua SMTP Gmail.
Gửi mail bằng PHP với PHPMailer
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php'; // cài qua: composer require phpmailer/phpmailer
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'SMTP.Gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'abcdabcdabcdabcd'; // Mat khau ung dung 16 ky tu
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL
$mail->Port = 465;
$mail->setFrom('[email protected]', 'Ten Website');
$mail->addAddress('[email protected]');
$mail->isHTML(true);
$mail->Subject = 'Ma OTP cua ban';
$mail->Body = 'Ma xac thuc: <b>123456</b>';
$mail->send();
echo 'Gui thanh cong';
} catch (Exception $e) {
echo "Loi gui mail: {$mail->ErrorInfo}";
}
Gửi mail bằng Node.js với Nodemailer
// cai dat: npm install nodemailer
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: 'SMTP.Gmail.com',
port: 465,
secure: true, // true cho port 465, false cho 587
auth: {
user: '[email protected]',
pass: 'abcdabcdabcdabcd' // Mat khau ung dung 16 ky tu
}
});
async function guiMail() {
const info = await transporter.sendMail({
from: '"Ten Website" <[email protected]>',
to: '[email protected]',
subject: 'Ma OTP cua ban',
html: 'Ma xac thuc: <b>123456</b>'
});
console.log('Da gui:', info.messageId);
}
guiMail().catch(console.error);
Nguyên tắc bảo mật quan trọng: đừng hardcode Mật khẩu ứng dụng vào source code đẩy lên Git. Hãy đưa vào biến môi trường (.env) và đọc qua getenv() hoặc process.env. Lộ chuỗi này tương đương trao quyền gửi mail dưới danh nghĩa bạn.
Khắc phục lỗi gửi mail và mail vào Spam
Phần lớn lỗi SMTP Gmail rơi vào vài nhóm quen thuộc. Đọc đúng thông báo lỗi là đã giải quyết được nửa vấn đề. Dưới đây là các triệu chứng thường gặp và cách xử lý lỗi gửi mail wp lẫn khi code thủ công.
| Triệu chứng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| 535 Username and Password not accepted | Dùng mật khẩu Gmail thường, hoặc chưa bật 2 lớp | Bật bảo mật 2 lớp, tạo lại Mật khẩu ứng dụng, dán đúng 16 ký tự |
| Connection timed out / refused | Hosting chặn port 465/587 outbound | Đổi giữa 465 và 587; nếu vẫn chặn, liên hệ nhà cung cấp mở port |
| Could not authenticate / SSL error | Ghép sai port với kiểu mã hóa | 465 đi với SSL, 587 đi với STARTTLS; không ghép chéo |
| Mail gửi được nhưng vào Spam | Thiếu SPF/DKIM, From Email không khớp | Để From trùng tài khoản, cấu hình SPF/DKIM nếu dùng domain riêng |
| Daily sending quota exceeded | Vượt 500 (Gmail) hoặc 2.000 (Workspace) mail/ngày | Giãn tần suất, hoặc chuyển sang dịch vụ email gửi chuyên dụng |
Checklist chống mail vào Spam
- From Email khớp tài khoản gửi: tránh việc Gmail nghi giả mạo.
- Tiêu đề và nội dung tự nhiên: không viết hoa toàn bộ, hạn chế từ kích spam như “miễn phí 100%”, “trúng thưởng”.
- Có bản text kèm HTML: email chỉ có HTML dễ bị đánh điểm spam cao hơn.
- Dùng domain riêng thì cấu hình SPF và DKIM: đây là yếu tố xác thực người gửi quan trọng nhất.
- Gửi đều, không gửi dồn: bắn hàng loạt trong thời gian ngắn dễ bị giới hạn.
Giới hạn của SMTP Gmail và khi nào cần mail server riêng
SMTP Gmail rất tốt cho nhu cầu nhỏ, nhưng nó không được Google thiết kế để gửi email hàng loạt. Khi website lớn lên, bạn sẽ chạm trần nhanh hơn tưởng tượng. Hiểu rõ giới hạn giúp bạn chọn đúng hướng đi tiếp theo.
- Hạn mức cứng: khoảng 500 mail/ngày với Gmail cá nhân, 2.000 với Workspace. Vượt là bị tạm khóa gửi.
- Không quản lý được IP gửi: bạn dùng chung uy tín IP của Google, không tự cải thiện được khi cần gửi marketing lượng lớn.
- Khó theo dõi sâu: không có dashboard tracking mở/click chuyên nghiệp như dịch vụ email transactional.
Khi nhu cầu vượt ngưỡng này, bạn có hai hướng. Một là dùng dịch vụ email transactional chuyên dụng và trỏ SMTP của họ thay cho Gmail. Hai là tự dựng mail server riêng trên VPS hoặc Cloud Server để toàn quyền kiểm soát IP, hàng đợi, SPF/DKIM/DMARC và lưu lượng gửi.
Tự dựng mail server không đơn giản: cần IP sạch, cấu hình PTR (reverse DNS), SPF, DKIM, DMARC đầy đủ và theo dõi blacklist liên tục. Nhưng khi hệ thống cần gửi vượt giới hạn Gmail và muốn làm chủ độ tin cậy, đây là hướng đáng cân nhắc. Lúc này tài nguyên ổn định và khả năng mở rộng theo lưu lượng trở thành yếu tố quyết định.
Câu hỏi thường gặp (FAQ)
SMTP Gmail có miễn phí không?
Có, dùng tài khoản Gmail cá nhân để gửi qua SMTP là miễn phí, trong hạn mức khoảng 500 email mỗi ngày. Google Workspace là gói trả phí với hạn mức cao hơn, khoảng 2.000 email/ngày. Vượt ngưỡng, tài khoản sẽ bị tạm khóa gửi trong khoảng 24 giờ.
Vì sao không dùng được mật khẩu Gmail thường để cấu hình SMTP?
Vì Google đã ngừng tính năng “Less secure app access” từ 2022. Hiện tại bạn phải bật bảo mật 2 lớp rồi tạo Mật khẩu ứng dụng 16 ký tự, hoặc dùng OAuth 2.0. Nhập mật khẩu đăng nhập thường sẽ trả về lỗi 535 xác thực thất bại.
Không thấy mục tạo Mật khẩu ứng dụng thì sao?
Nguyên nhân phổ biến nhất là chưa bật Xác minh 2 bước; hãy bật trước trong phần Bảo mật. Nếu là tài khoản Google Workspace, quản trị viên có thể đã chặn App Password theo chính sách công ty. Khi đó bạn cần chuyển sang xác thực bằng OAuth 2.0.
Nên dùng port 465 hay 587 cho WordPress?
Với WP Mail SMTP, port 465 kèm SSL thường hoạt động ngay và ít lỗi nhất trên hosting tại Việt Nam. Nếu nhà cung cấp chặn 465 hoặc bạn gặp lỗi kết nối, hãy chuyển sang 587 với STARTTLS. Tránh dùng port 25 vì gần như luôn bị chặn.
Gửi mail qua SMTP Gmail có bị vào Spam không?
Với lượng nhỏ và From Email khớp tài khoản gửi, tỷ lệ vào Inbox khá tốt. Để giảm rủi ro Spam, hãy gửi nội dung tự nhiên, kèm bản text, và nếu dùng domain riêng thì cấu hình SPF cùng DKIM đầy đủ để chứng minh danh tính người gửi.
Chốt lại: cấu hình đúng một lần, gửi mail ổn về sau
Để cấu hình SMTP Gmail chạy mượt, bạn chỉ cần nhớ ba điều cốt lõi. Thứ nhất, bắt buộc bật bảo mật 2 lớp rồi tạo Mật khẩu ứng dụng, không dùng mật khẩu thường. Thứ hai, ghép đúng port với mã hóa: 465 đi SSL, 587 đi STARTTLS. Thứ ba, để From Email khớp tài khoản và cấu hình SPF/DKIM khi dùng domain riêng để tránh Spam. Khi lượng mail vượt giới hạn Gmail, đó là lúc tính tới mail server riêng trên hạ tầng bạn tự kiểm soát.
Cần một môi trường để tự chủ cấu hình gửi mail?
Bắt đầu với một VPS có toàn quyền root để cài đặt và kiểm soát đúng theo nhu cầu của bạn.
Lưu ý: nội dung kỹ thuật trong bài chỉ mang tính tham khảo. Các bước, lệnh và thông số cấu hình có thể thay đổi theo hệ điều hành, phiên bản phần mềm, chính sách của Google và môi trường thực tế của bạn. Hãy sao lưu dữ liệu, kiểm thử trên môi trường staging và đánh giá rủi ro trước khi áp dụng cho hệ thống production.
