Kiểm Tra Email
NTD Tools
Bộ công cụ nhanh cho Hotmail/Outlook, Gmail và Mail.tm — đọc mã xác thực, làm mới refresh_token hàng loạt, và các tiện ích liên quan.
Làm Mới Refresh Token Hàng Loạt (Outlook/Hotmail)
Dùng refresh_token cũ để xin token mới từ Microsoft (không cần đăng nhập lại). Mỗi dòng 1 tài khoản, theo 1 trong 2 định dạng:
email|refresh_token|client_idemail|pass|refresh_token|client_id(giữ nguyên cột pass, chỉ đổi refresh_token)
Check Hàng Loạt Tài Khoản X (Twitter)
Dán danh sách username X, mỗi dòng 1 tài khoản. Hỗ trợ @user, user, hoặc link x.com/user.
History
Chưa có lịch sử trong phiên bản này.
Định dạng nhập liệu
Dán vào ô "Email & Credentials" ở tab Mail theo đúng 1 trong 3 dạng sau (phân cách bằng dấu |):
- Hotmail/Outlook:
email@outlook.com|refresh_token|client_id - Gmail:
email@gmail.com|app_password - Mail.tm:
user@mail.tm|password
Lấy refresh_token & client_id (Outlook/Hotmail)
- Đăng ký một ứng dụng tại Azure App Registrations dạng "Mobile and desktop applications" (public client, không cần secret), lấy client_id.
- Cấp quyền API
offline_accessvàMail.Read(hoặcMail.ReadWrite) cho ứng dụng. - Cho tài khoản Hotmail đăng nhập qua luồng OAuth2 của app để lấy authorization code, rồi đổi lấy refresh_token ở bước xác thực đầu tiên.
- Dùng refresh_token đó điền vào form — tool sẽ tự thử nhiều scope để lấy access token mới mỗi lần đọc mail.
Lấy App Password (Gmail)
- Bật Xác minh 2 bước cho tài khoản Google tại myaccount.google.com/security.
- Vào myaccount.google.com/apppasswords, tạo App Password mới (chọn "Mail" hoặc "Other").
- Copy chuỗi 16 ký tự đó dùng làm app_password — không phải mật khẩu đăng nhập Gmail thường.
Dùng Mail.tm
Mail.tm là hòm thư tạm miễn phí, không cần đăng ký trước — chỉ cần nhập đúng địa chỉ và mật khẩu bạn đã dùng để tạo hòm thư đó trên mail.tm hoặc các domain tương đương.
Lỗi thường gặp
"Thiếu refresh_token hoặc client_id" / "Thiếu email, refresh_token hoặc client_id"
Form thiếu trường bắt buộc. Kiểm tra lại định dạng email|refresh_token|client_id ở trên, đủ 3 phần trở lên cách nhau bởi |.
"Refresh token không có quyền đọc email" (AADSTS70000)
Refresh token hiện tại chưa được cấp quyền Mail.Read/Mail.ReadWrite. Cần đăng nhập lại ứng dụng Azure với đầy đủ scope rồi lấy refresh_token mới.
"Không thể kết nối đến Gmail. Kiểm tra lại app password."
App Password sai, đã bị thu hồi, hoặc tài khoản chưa bật Xác minh 2 bước (bắt buộc để tạo App Password). Tạo lại App Password mới theo hướng dẫn ở trên.
"Sai email hoặc password mail.tm"
Sai địa chỉ hoặc mật khẩu hòm thư mail.tm, hoặc hòm thư đã hết hạn (mail.tm tự xoá hòm thư sau một thời gian không dùng).
"Không có email nào"
Đăng nhập/kết nối thành công nhưng hộp thư (kể cả Spam) chưa có email mới nào khớp. Thử tăng "Số email" hoặc bỏ bộ lọc "Email người gửi".
Dùng API trực tiếp (cho dev)
Các endpoint dưới đây nhận cả GET (tham số qua query string, để tương thích ngược với các tool cũ) lẫn POST (JSON body, khuyến nghị vì không lộ credentials qua URL/log). Base URL là nơi tool đang chạy — http://localhost:3000 khi chạy node server.js, hoặc domain thật khi deploy Netlify.
GET/POST /api/readMail — Outlook/Hotmail
curl -X POST http://localhost:3000/api/readMail \
-H "Content-Type: application/json" \
-d '{
"email": "user@outlook.com",
"refresh_token": "...",
"client_id": "...",
"tenant": "consumers",
"limit": 10
}'
tenant (mặc định consumers), limit (mặc định 10) đều tùy chọn. Response thành công:
{
"success": true,
"type": "outlook",
"via": "graph",
"emails": [
{
"subject": "Mã xác thực Netflix",
"sender": "Netflix",
"senderEmail": "info@account.netflix.com",
"content": "...",
"preview": "...",
"verificationCode": "123456",
"date": "2026-07-27T02:00:00.000Z",
"displayDate": "27/07/2026 09:00",
"folder": "INBOX",
"hasCode": true
}
],
"count": 1,
"withCode": 1,
"newRefreshToken": null
}
newRefreshToken khác null khi Microsoft xoay vòng refresh_token — nên lưu lại giá trị này thay cho refresh_token cũ.
GET/POST /api/readMail/gmail
curl -X POST http://localhost:3000/api/readMail/gmail \
-H "Content-Type: application/json" \
-d '{ "email": "user@gmail.com", "app_password": "xxxxxxxxxxxxxxxx", "limit": 10 }'
Response giống Outlook, thêm field fromSpam (số email lấy từ thư mục Spam).
GET/POST /api/readMail/mailtm
curl -X POST http://localhost:3000/api/readMail/mailtm \
-H "Content-Type: application/json" \
-d '{ "account": "user@mail.tm|password", "limit": 10 }'
Có thể thay account bằng 2 field riêng: { "email": "...", "password": "..." }.
GET/POST /api/refresh-outlook-token
Chỉ xin token mới từ refresh_token cũ, không đọc mail — dùng cho tab "Làm Mới Refresh Token".
curl -X POST http://localhost:3000/api/refresh-outlook-token \
-H "Content-Type: application/json" \
-d '{ "refresh_token": "...", "client_id": "..." }'
{
"success": true,
"message": "Refresh token thành công",
"access_token": "...",
"newRefreshToken": "...",
"scopes_used": ["offline_access", "Mail.ReadWrite"]
}
Mọi lỗi đều trả JSON dạng { "success": false, "error": "...", "details": "..." } kèm HTTP status phù hợp (400/401/403/404/500).