CMSNPA TempMail · REST API
API công khai, không cần API key, trả về JSON và cho phép gọi từ mọi tên miền (CORS mở). Dùng để tự động lấy OTP hoặc kiểm tra hộp thư từ script của bạn.
| Tham số | Kiểu | Mô tả |
|---|---|---|
| addrBẮT BUỘC | string | Địa chỉ cần đọc, ví dụ clonenpa@cmsnpa.com.
Nếu bỏ phần @domain thì hệ thống tự thêm @cmsnpa.com.
Hỗ trợ @cmsnpa.com và @clonenpa.com. |
| t | number | Tuỳ chọn. Timestamp bất kỳ để tránh cache phía trình duyệt. |
GET https://mail.cmsnpa.com/api/messages?addr=clonenpa@cmsnpa.com
{
"ok": true,
"address": "clonenpa@cmsnpa.com",
"count": 1,
"messages": [
{
"to": "clonenpa@cmsnpa.com",
"from": "noreply@shopee.com",
"subject": "Mã xác nhận đăng ký",
"body": "Mã xác nhận của bạn là 482910.",
"bodyHtml": "<html>...</html>",
"otp": "482910",
"time": 1755500000000
}
]
}
| Trường | Kiểu | Ý nghĩa |
|---|---|---|
| ok | boolean | Trạng thái xử lý của request. |
| address | string | Địa chỉ đã chuẩn hoá (chữ thường, đã ghép domain). |
| count | number | Số mail đang có trong hộp thư. |
| messages | array | Danh sách mail, mới nhất đứng đầu. |
| messages[].otp | string | Mã OTP hệ thống tự dò ra. Chuỗi rỗng nếu không tìm thấy. |
| messages[].bodyHtml | string | HTML gốc đã lọc bỏ script. Rỗng nếu mail chỉ có text. |
| messages[].time | number | Thời điểm nhận, tính bằng mili giây (Unix epoch). |
{
"ok": false,
"error": "Missing addr",
"example": "/api/messages?addr=test@cmsnpa.com"
}
# Lấy toàn bộ mail curl "https://mail.cmsnpa.com/api/messages?addr=clonenpa@cmsnpa.com" # Chỉ lấy OTP của mail mới nhất curl -s "https://mail.cmsnpa.com/api/messages?addr=clonenpa@cmsnpa.com" | jq -r '.messages[0].otp'
async function getOtp(addr) { const res = await fetch(`https://mail.cmsnpa.com/api/messages?addr=${addr}&t=${Date.now()}`); const data = await res.json(); return data.messages?.[0]?.otp || ""; } // Chờ tới khi có OTP (poll mỗi 3 giây) async function waitOtp(addr, timeoutMs = 60000) { const end = Date.now() + timeoutMs; while (Date.now() < end) { const otp = await getOtp(addr); if (otp) return otp; await new Promise(r => setTimeout(r, 3000)); } throw new Error("Hết thời gian chờ OTP"); }
import time, requests def wait_otp(addr, timeout=60): end = time.time() + timeout while time.time() < end: r = requests.get("https://mail.cmsnpa.com/api/messages", params={"addr": addr, "t": int(time.time() * 1000)}) msgs = r.json().get("messages", []) if msgs and msgs[0]["otp"]: return msgs[0]["otp"] time.sleep(3) raise TimeoutError("Không nhận được OTP") print(wait_otp("clonenpa@cmsnpa.com"))
Giao diện web đang tự kiểm tra mỗi 5 giây. Gọi dày hơn cũng không giúp mail về sớm hơn.
Thêm &t=<timestamp> vào URL để trình duyệt không trả kết quả cũ.
ABC@cmsnpa.com và abc@cmsnpa.com là cùng một hộp thư.
Nếu mail không chứa dãy số nhận dạng được, hãy tự đọc body để xử lý.