Tổng quan

Gmail SMTP cho phép bạn gửi email từ ứng dụng bằng tài khoản Gmail. Để bảo mật, Google yêu cầu dùng App Password thay vì mật khẩu Gmail thông thường.

Video

https://youtu.be/um5eRGofeJE

Các bước thiết lập

1

Bật 2-Step Verification

App Password chỉ hoạt động khi tài khoản đã bật xác thực 2 bước.
  1. Truy cập myaccount.google.com và đăng nhập bằng tài khoản Gmail muốn dùng
  2. Chọn tab Security (Bảo mật) ở thanh bên trái
  3. Cuộn xuống mục How you sign in to Google
  4. Click 2-Step Verification → làm theo hướng dẫn (nhập số điện thoại, xác minh OTP)
  5. Khi hoàn tất, bạn sẽ thấy dấu ✅ xanh ở mục 2-Step Verification
Nếu tài khoản đang bật Advanced Protection, bạn không thể tạo App Password. Hãy tắt Advanced Protection trước.
2

Truy cập trang App Passwords

Mở trực tiếp đường dẫn:
https://myaccount.google.com/apppasswords
3

Tạo App Password

Giao diện Google hiện tại (2026) chỉ còn một ô nhập App name, không còn dropdown chọn loại như trước.
  1. Nhập tên gợi nhớ vào ô App name, ví dụ: Nextjs Email App hoặc Softech Mailer
  2. Click Create
Tên này chỉ giúp bạn dễ nhận biết và xóa sau này, không ảnh hưởng đến chức năng.
4

Sao chép mật khẩu 16 ký tự

Sau khi click Create, một popup vàng hiện ra với mật khẩu dạng:
xxxx xxxx xxxx xxxx
Ví dụ: abcd efgh ijkl mnop
Sao chép mật khẩu ngay vào nơi an toàn (file .env.local, password manager, …) trước khi click Done. Sau khi đóng popup, bạn sẽ không thể xem lại được nữa. Nếu lỡ đóng, hãy xóa và tạo App Password mới.
5

Cấu hình trong Next.js

Thêm thông tin xác thực vào file .env.local.
.env.local
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password
EMAIL_FROM=Admin <noreply@example.com>
Thêm .env.local vào .gitignore để tránh lộ thông tin xác thực lên repository.
6

Prompt mẫu trong ứng dụng dashboard

Hãy viết cho tôi 1 thư viện gửi email:
1. Tôi đã có gmail app pass như sau: lnjr lonk ydvt twaq
2. Thư viện này cho phép tái sử dụng lại nhiều chỗ trong dự án, và hãy viết nó ở phía BACKEND API

Thử nghiệm:
Viết 1 trang /mail/test/ để thư nghiệm việc gửi mail, dùng giao diện trực quan.


Troubleshooting thường gặp

LỗiNguyên nhân & Cách fix
Không thấy mục App passwordsChưa bật 2FA, đang bật Advanced Protection, hoặc tài khoản Workspace bị admin chặn
Username and Password not acceptedDùng nhầm mật khẩu Gmail thường thay vì App Password
Invalid login: 535-5.7.8App Password sai hoặc đã bị thu hồi → tạo cái mới
Không nhận được email khi testKiểm tra thư mục spam, hoặc Gmail giới hạn ~500 email/ngày với tài khoản free