Gửi thư qua API Email API

Nhận sự kiện thư qua webhook

Cấu hình endpoint để biết thư tới hay hỏng ngay trong mã nguồn, chọn đúng sự kiện cần nghe và xác minh chữ ký để không nhận nhầm dữ liệu giả.

Lệnh gọi gửi thư trả về "đã nhận để gửi", không phải "đã tới nơi". Webhook báo ngược chuyện xảy ra sau đó.

Chuẩn bị

  • Một địa chỉ HTTP công khai nhận được yêu cầu POST, hoặc một kênh chat để nhận thông báo
  • Đã gửi được thư. Xem Gửi thư đầu tiên qua Email API

Chọn kênh

Vào Email API → Webhooks → Thêm Webhook mới. Ngoài HTTP còn gửi thẳng được vào kênh chat.

Trang Webhooks: nút thêm webhook mới, và vùng danh sách endpoint kèm lịch sử giao dịch có các cột ID Giao dịch, URL Đích và Lần gửi

KênhHợp với
HTTPứng dụng tự xử lý — đánh dấu địa chỉ hỏng, dừng gửi lại
Kênh chat của nhómngười theo dõi, không phải máy xử lý

Kênh chat tiện để cảnh báo nhưng đừng dùng thay HTTP: con người không cập nhật được cơ sở dữ liệu.

Màn hình Thêm Webhook mới: chọn kênh gửi gồm HTTP và các kênh chat, ô URL đích, và danh sách năm sự kiện email chấm sent, delivered, bounced, complained, failed với hai sự kiện bounced và complained được chọn sẵn

Chọn sự kiện

Bảy sự kiện — chọn đúng thứ cần xử lý, đừng chọn hết.

Sự kiệnKhi nào bắnBạn nên làm gì
email.sentngay khi hệ thống nhậnthường không cần — bạn đã biết từ mã trả về
email.deliveredsau khi nơi nhận báo đã nhậnghi nhận, nếu cần
email.openedngười nhận mở thư — bắn mỗi lần mởđếm lượt mở, nếu cần
email.clickedngười nhận bấm liên kết trong thư — bắn mỗi lần bấmđếm lượt bấm, nếu cần
email.bouncedthư bị trả lạiđánh dấu địa chỉ hỏng, ngừng gửi
email.complainedngười nhận báo cáo là thư rácngừng gửi cho địa chỉ đó ngay
email.failedkhông gửi đượcxem lý do, sửa rồi thử lại

email.bounced và email.complained được chọn sẵn vì đó là hai sự kiện bắt buộc phải xử lý nếu muốn giữ uy tín gửi thư.

email.complained nghiêm trọng nhất: tiếp tục gửi cho người đã báo cáo bạn là thư rác làm hỏng uy tín của cả tên miền.

Xác minh chữ ký

Sau khi tạo, hệ thống hiện một secret chỉ hiển thị một lần — lưu ngay như lưu khoá API. Sửa webhook về sau không đổi secret.

Secret dùng để kiểm chữ ký ở header X-CloudFly-Signature. Endpoint phải kiểm chữ ký trước khi tin nội dung.

Địa chỉ webhook là công khai

Không kiểm chữ ký thì bất kỳ ai biết địa chỉ đó đều gửi được sự kiện email.bounced giả, và ứng dụng của bạn sẽ tự tay đánh dấu hỏng những địa chỉ khách hàng đang dùng tốt.

Viết endpoint cho đúng

Ba điều hệ thống trông đợi ở endpoint của bạn:

  1. Trả về nhanh. Trả 2xx trong 10 giây; việc nặng thì đẩy vào hàng đợi rồi trả lời ngay.
  2. Chịu được trùng lặp. Sự kiện có thể tới hơn một lần, ví dụ khi bấm Gửi lại. Xử lý theo email_id + type (với email.opened/email.clicked thêm timestamp).
  3. Không có gửi lại tự động. Mỗi sự kiện chỉ gửi một lần; mã khác 2xx, quá 10 giây hay chuyển hướng đều bị ghi là lỗi.

Theo dõi và gỡ lỗi

Trang webhook có lịch sử giao dịch với cột ID Giao dịch, URL Đích và Lần gửi. Lịch sử lưu 30 ngày.

Triệu chứngNguyên nhân thường gặp
Dòng báo Lỗi gửiendpoint trả mã khác 2xx, quá 10 giây hoặc không kết nối được — sửa endpoint rồi bấm Gửi lại trên dòng đó
Cột Lần gửi lớn hơn 1dòng đó đã được bấm Gửi lại — mỗi lần bấm cộng thêm 1, hệ thống không tự gửi lại
Chưa có lịch sử nàochưa có sự kiện nào thuộc loại bạn đã chọn xảy ra
Endpoint bị tạm ngưngdùng nút Kích hoạt endpoint để bật lại

Tạm ngưng là bỏ lỡ sự kiện

Nút Tạm ngưng endpoint dừng gửi mà không xoá cấu hình hay secret, nhưng sự kiện xảy ra trong lúc tạm ngưng không được lưu và không gửi bù. Đang sửa hệ thống nhận mà vẫn cần sự kiện thì cứ để endpoint chạy, sửa xong bấm Gửi lại các dòng lỗi.

Kiểm tra kết quả

  1. Gửi một thư tới một địa chỉ chắc chắn không tồn tại trong tên miền bạn kiểm soát
  2. Chờ vài phút
  3. Endpoint của bạn nhận được email.bounced, và lịch sử giao dịch có một dòng thành công
  4. Địa chỉ đó xuất hiện trong danh sách chặn

Bước 4 là cách chéo để chắc chắn hệ thống và ứng dụng của bạn đang nhìn cùng một sự thật.