Gửi thư qua API Email API

Gửi thư đầu tiên qua Email API

Một lệnh gọi HTTP từ đầu tới thư nhận được, cách đọc mã trả về cho đúng, và ba lỗi hay gặp nhất ở lần gửi đầu tiên của một tài khoản mới.

Mục tiêu trang này là một thư nhận được thật, không phải hiểu hết API — phần đó nằm ở mục Hướng dẫn trong bảng điều khiển.

Chuẩn bị

Gọi lệnh gửi

Thay cf_... bằng khoá của bạn và example.com bằng tên miền gửi đã kích hoạt.

curl -X POST https://api-vmail.cloudfly.vn/api/emails \
  -H "Authorization: Bearer cf_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "no-reply@example.com",
    "to": "ban@example.net",
    "subject": "Thư thử đầu tiên",
    "text": "Nếu bạn đọc được dòng này thì Email API đã chạy."
  }'

Bốn trường trên là tối thiểu. Tham số đầy đủ — tệp đính kèm, mẫu thư, biến, người nhận ẩn — nằm ở Email API → Hướng dẫn.

Trang Hướng dẫn trong bảng điều khiển: thanh điều hướng bên trái với các mục Bắt đầu nhanh, Gửi thư, Nhật ký, Webhooks, Hạn mức và Ví dụ, bên phải là nội dung tham chiếu kèm khối mã chép dán được

TrườngRàng buộc
fromphải thuộc tên miền đã kích hoạt của tài khoản
tođịa chỉ người nhận
subjecttiêu đề
text hoặc htmlphải có ít nhất một trong hai

Đọc mã trả về

{
  "success": true,
  "data": {
    "id": "em_a1b2c3d4e5f6",
    "from": "no-reply@example.com",
    "to": "ban@example.net",
    "status": "queued",
    "created_at": "2026-07-01T10:30:00Z"
  }
}

Mã thư nằm ở data.id, không phải id ở gốc — lưu lại để tra cứu. Mọi phản hồi đều bọc trong success + data, kể cả phản hồi lỗi.

Mã 202 nghĩa là đã nhận để gửi, không phải đã tới hộp thư: thư còn đi tiếp và có thể bị từ chối sau đó.

Muốn biết thư có tới hay không: Thống kê & Nhật ký, hoặc webhook nếu cần biết ngay trong mã nguồn.

Mọi mã khác 202 là bị từ chối ngay, chưa gửi gì — ý nghĩa từng mã ở Bảng tra mã lỗi Email API.

Ba lỗi hay gặp ở lần đầu

Bị từ chối xác thực

Khoá sai, đã bị xoá, hoặc header thiếu chữ Bearer . Chép lại khoá từ chỗ đã lưu — bảng điều khiển chỉ hiện phần đầu mã.

Bị từ chối quyền dù khoá đúng

Địa chỉ from không thuộc tên miền mà khoá được phép gửi. Hai nguyên nhân:

  • Tên miền chưa kích hoạt xong — kiểm ở trang Tên miền gửi
  • Khoá là Sending Key gắn tên miền khác — loại khoá này chỉ gửi được tên miền của nó

Trả về 202 mà không thấy thư

Theo thứ tự:

  1. Kiểm thư mục rác của hộp thư nhận
  2. Mở Thống kê & Nhật ký → tab Nhật ký, tra đúng thư đó — trạng thái ở đó mới là sự thật
  3. Kiểm danh sách chặn: người nhận có thể đang bị chặn từ lần gửi hỏng trước, thư bị bỏ trước khi ra khỏi hệ thống

Kiểm tra kết quả

Xong khi cả ba đều đúng:

  1. Lệnh gọi trả về 202
  2. Thư có mặt trong hộp thư nhận, kể cả trong thư mục rác
  3. Thống kê & Nhật ký → tab Nhật ký có dòng tương ứng, trạng thái thành công

Thư vào thư mục rác vẫn tính là gửi được. Muốn cải thiện thì bắt đầu từ bản ghi _dmarc ở trang tên miền gửi.

Bước tiếp theo

ViệcTrang
Biết thư tới hay hỏng, ngay trong mã nguồnNhận sự kiện qua webhook
Hiểu vì sao có địa chỉ không gửi đượcĐọc và xử lý danh sách chặn
Thư gửi được nhưng không tớiXử lý sự cố Email API
Tra một mã lỗi vừa nhận đượcBảng tra mã lỗi Email API
Danh sách tham số đầy đủ và mã mẫuEmail API → Hướng dẫn trong bảng điều khiển