Integrasikan DirectMail dengan EventBridge untuk mengarahkan notifikasi pengiriman email ke target seperti DingTalk, Message Queue for Apache RocketMQ, dan HTTP endpoints.
Setelah Anda mengonfigurasi event bus, hasil pengiriman email yang dikirim melalui DirectMail diarahkan ke target event tertentu—seperti DingTalk, Message Queue for Apache RocketMQ, dan HTTP—berdasarkan aturan routing Anda. Hal ini memungkinkan pengambilan hasil pengiriman secara asinkron.
Lengkapi langkah-langkah berikut untuk menyiapkan routing event.
Aktifkan distribusi event
Nyalakan sakelar notifikasi event di Konsol DirectMail.

Aktifkan dan otorisasi EventBridge
1. Cari EventBridge di halaman utama Alibaba Cloud dan aktifkan layanan tersebut secara gratis.


Buat aturan event
Di Konsol EventBridge, navigasikan ke event bus untuk layanan cloud > Create Rule. Masukkan nama dan deskripsi aturan untuk DirectMail.

Konfigurasikan pola event. Pilih Alibaba Cloud official event source sebagai tipe sumber event dan acs.dm sebagai sumber event. Jenis event yang didukung: Send Failure, Send Success, Link Click, dan Email Open. Tambahkan jenis event sesuai kebutuhan; jenis yang tidak didukung akan difilter.
Untuk mengonfigurasi target event, pilih tipe layanan seperti DingTalk, Message Service (MNS), atau HTTP. Untuk detailnya, lihat Kelola aturan event.
Contoh ini menggunakan Message Queue for MQTT sebagai target event. Tentukan antrian tujuan. (Untuk mengaktifkan Message Queue for MQTT dan membuat antrian, ikuti bagian "Aktifkan Message Queue for MQTT dan buat antrian penerima" di bawah.) Isi pesan default adalah event lengkap tanpa encoding Base64. Konfigurasikan opsi retry dan dead-letter sesuai kebutuhan, lalu klik Create Rule.
Setelah membuat aturan, lihat aturan tersebut di Konsol EventBridge.

Jenis event dan modifikasi
Jenis event yang didukung
Jenis peristiwa | Nilai parameter type |
dm:Deliver:Fail | |
dm:Deliver:Succeed | |
dm:Feedback:FblReport | |
dm:Feedback:Subscribe | |
dm:Feedback:UnSubscribe | |
dm:Trace:Click | |
dm:Trace:Open | |
dm:Validator:GrayListResult |
EventBridge menerima event hingga 30 hari setelah email dikirim.
Mengonfigurasi statistik untuk jenis event
Klik Event Rules > Edit Event Pattern > Event Type untuk mengubah jenis event.


Prasyarat untuk pelacakan pembukaan dan klik
Untuk menerima notifikasi event pembukaan dan klik email, aktifkan terlebih dahulu data tracking. Aktifkan data tracking.
Menerima pesan event dan memverifikasi tautan
Contoh ini menggunakan antrian pesan ringan yang dikonfigurasi di atas untuk memverifikasi jalur pengiriman event.
Siapkan antrian pesan ringan
-
Buka Konsol Message Queue for MQTT. Jika Message Queue for MQTT belum diaktifkan, ikuti petunjuk untuk mengaktifkannya.
-
Di panel navigasi kiri, klik Queues.
-
Klik Create Queue.
-
Masukkan nama antrian, misalnya
delivery-result-queue. Pertahankan pengaturan default dan klik OK.

Distribusi event pemicu
Setelah mengirim email melalui DirectMail, lihat jejak event di Konsol EventBridge.


Hasil target peristiwa
Di Konsol antrian pesan ringan, pilih antrian yang dikonfigurasi sebagai target EventBridge (delivery-result-queue) dan klik Send and Receive Messages.

Klik Receive Messages untuk melihat pesan event, lalu klik Details untuk melihat isi lengkapnya. Pengiriman ke Message Service dikonfirmasi jika ID event sesuai dengan catatan EventBridge.


Contoh: Konfigurasi penerusan event berdasarkan alamat pengirim
Distribusi event yang dikonfigurasi di atas berlaku untuk semua domain dan alamat pengirim di DirectMail. Anda dapat memodifikasi JSON aturan event untuk memfilter event berdasarkan kondisi tertentu, seperti alamat pengirim.
Contoh berikut mengonfigurasi aturan yang mengarahkan event DirectMail untuk alamat pengirim test@hangzhou.dmtest.top ke target event.
1. Saat membuat aturan event, tentukan pola event untuk memfilter event berdasarkan field-nya.

Contoh ini menggunakan pola berikut:
{
"source": [
"acs.dm"
],
"type": [
"dm:Deliver:Fail",
"dm:Deliver:Succeed",
"dm:Trace:Click",
"dm:Trace:Open",
"dm:Feedback:FblReport"
],
"data": {
"from": [
"test@hangzhou.dmtest.top"
]
}
}
Berikut adalah isi lengkap pesan event. Buat pola event berdasarkan konten dan strukturnya.
-
Semua nama field dalam pola event harus ada dalam isi event.
-
Struktur bersarang nama field dalam pola event harus sesuai dengan struktur event.
-
Pencocokan bersifat eksak, karakter per karakter, dan case-sensitive. String tidak dinormalisasi.
-
Nilai dalam pola harus mengikuti aturan JSON: string diapit tanda kutip, angka, serta kata kunci tanpa tanda kutip true, false, dan null.
-
Pola event mendukung logika AND dan OR. Field key yang berbeda dalam satu pola menggunakan logika AND. Array nilai untuk satu key menggunakan logika OR.
Isi pesan event default:
Pengiriman email gagal
Saat pengiriman email gagal, EventBridge menerima event seperti contoh berikut.
{
"data": {
"header": {
"X-Notify-Message-ID": "test******@******"
},
"env_id": "60000******",
"account": "batch******@top",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"channel_name": "bg:vip_*",
"outbound_ip": "8.*.*.7",
"send_time": "2024-04-29T11:07:04",
"deliver_time": "2024-04-29T11:07:12",
"status": "2",
"event": "dm:Deliver:Fail",
"region": "cn-hangzhou",
"err_code": "554",
"err_msg": "554 RCPT xxx******@aliyun.com dosn't exist",
"failed_type": "SmtpNxBox",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"tag": "xxxxx"
},
"id": "8734hhidu983hi457",
"source": "acs:dm",
"specversion": "1.0",
"subject": "acs:dm:cn-hangzhou:{AccountId}:*",
"time": "2024-04-29T11:07:12+08:00",
"type": "dm:Deliver:Fail",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX"
}Tabel berikut menjelaskan parameter dalam field data.
Parameter | Type | Contoh | Deskripsi |
header | Object | Header yang terkait dengan email. | |
X-Notify-Message-ID | String | test****@example.com | Header kustom X-Notify-Message-ID. |
env_id | String | 60000**** | ID email yang dikembalikan sistem saat email dikirim. |
account | String | batch****@top | Alamat email pengirim. |
from | String | batch****@top | Alamat email pengirim. |
rcpt | String | a****@aliyun.com | Alamat email penerima. |
msg_id | String | 1df****@example.com | Field Message-ID dari email. |
channel_name | String | bg:vip_* | Nama channel tempat alamat IP outbound untuk pengiriman ini termasuk. |
outbound_ip | String | 8.*.*.7 | Alamat IP outbound untuk pengiriman ini. |
send_time | String | 2024-04-29T11:07:04 | Waktu email diterima. |
deliver_time | String | 2024-04-29T11:07:12 | Waktu pengiriman email selesai. |
status | String | 2 | Status pengiriman.
|
event | String | dm:Deliver:Fail | Jenis pesan event. Ini sama dengan parameter type. |
region | String | cn-hangzhou | Wilayah tempat event terjadi. |
err_code | String | 554 | Kode yang dikembalikan oleh penyedia layanan email (ESP) penerima setelah pengiriman selesai. |
err_msg | String | 554 RCPT a****@aliyun.com dosn't exist | Pesan yang dikembalikan oleh ISP penerima saat pengiriman selesai. |
failed_type | String | SmtpNxBox | Kategorisasi hasil pengiriman. |
esp | String | *mail.com | Kategorisasi penyedia email penerima. |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | ID pool IP yang digunakan untuk mengirim email. |
is_dedicated_ip | Boolean | true | Menunjukkan apakah alamat IP khusus digunakan. |
tag | String | xxxxx | Tag yang digunakan untuk mengirim email. |
Pengiriman email berhasil
Saat email berhasil dikirim, EventBridge menerima event seperti contoh berikut.
{
"data": {
"header": {
"X-Notify-Message-ID": "test******@******"
},
"env_id": "60000******",
"account": "batch******@top",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"channel_name": "bg:vip_*",
"outbound_ip": "8.*.*.7",
"send_time": "2024-04-29T11:07:04",
"deliver_time": "2024-04-29T11:07:12",
"status": "0",
"event": "dm:Deliver:Succeed",
"region": "cn-hangzhou",
"err_code": "250",
"err_msg": "250 Send Mail OK",
"failed_type": "SendOk",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"tag": "xxxxx"
},
"id": "8734hhidu983hi457",
"source": "acs:dm",
"specversion": "1.0",
"subject": "acs:dm:cn-hangzhou:{AccountId}:*",
"time": "2024-04-29T11:07:12+08:00",
"type": "dm:Deliver:Succeed",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX"
}Untuk deskripsi parameter dalam field data, lihat Deskripsi parameter.
Data laporan Mail FBL
Saat email dilaporkan melalui feedback loop (FBL), EventBridge menerima event seperti berikut:
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:FblReport",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"send_time": "1726821644",
"send_email": "from@xxx.com",
"block_email": "to@yyy.com",
"subject": "Hello Mr.xxx",
"message_id": "<msgid***@xxx.com>",
"block_time": "1726821667",
"fbl_isp": "outlook**",
"fingerprint": "SMTPD_abc****"
}
}
Parameter dalam field data:
|
Parameter |
Tipe |
Contoh |
Deskripsi |
|
send_time |
String |
1726821644 |
Waktu email dikirim. |
|
send_email |
String |
from@xxx.com |
Alamat email pengirim. |
|
block_email |
String |
to@yyy.com |
Alamat email penerima yang diblokir. |
|
subject |
String |
Hello Mr.xxx |
Subjek email. |
|
message_id |
String |
<msgid***@xxx.com> |
Identifier unik email. |
|
block_time |
String |
1726821667 |
Waktu email diblokir. |
|
fbl_isp |
String |
outlook** |
Penyedia layanan internet (ISP) pengirim. |
|
fingerprint |
String |
SMTPD_abc**** |
Sidik jari email. |
Data resubskripsi email
Saat penerima melakukan resubskripsi, EventBridge menerima event seperti berikut:
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:Subscribe",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"envid": "6000*********",
"from": "from@xxx.com",
"rcpt": "to@yyy.com",
"client_ip": "102.**.**.1"
}
}
Parameter dalam field data:
|
Parameter |
Tipe |
Contoh |
Deskripsi |
|
operate_time |
String |
2024-04-29T11:25:48 |
Waktu operasi terjadi. Waktu dalam UTC. |
|
env_id |
String |
6000********* |
ID email yang dikembalikan sistem saat email dikirim. |
|
from |
String |
from@xxx.com |
Alamat pengirim. |
|
rcpt |
String |
to@yyy.com |
Alamat penerima. |
|
client_ip |
String |
102.**.**.1 |
Alamat IP klien untuk event pembukaan |
Data unsubskripsi email
Saat penerima melakukan unsubskripsi, EventBridge menerima event seperti berikut:
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Feedback:UnSubscribe",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"envid": "6000*********",
"from": "from@xxx.com",
"rcpt": "to@yyy.com",
"client_ip": "102.**.**.1"
}
}
Parameter dalam field data:
|
Parameter |
Tipe |
Contoh |
Deskripsi |
|
operate_time |
String |
2024-04-29T11:25:48 |
Waktu operasi terjadi. Waktu dalam UTC. |
|
env_id |
String |
6000********* |
ID email yang dikembalikan sistem saat email dikirim. |
|
from |
String |
from@xxx.com |
Alamat pengirim. |
|
rcpt |
String |
to@yyy.com |
Alamat penerima. |
|
client_ip |
String |
102.**.**.1 |
Alamat IP klien sumber untuk event |
Event klik
Saat penerima mengklik tautan dalam email, EventBridge menerima event seperti contoh berikut.
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Trace:Click",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"client_ip": "202.**.**.1",
"env_id": "60000******",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"event": "dm:Trace:Click",
"region": "cn-hangzhou",
"url": "https://www.aliyun.com",
"outbound_ip": "102.**.**.1",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
"tag": "xxxxx"
}
}
Tabel berikut menjelaskan parameter dalam field data.
Parameter | Tipe | Contoh | Deskripsi |
operate_time | String | 2024-04-29T11:25:48 | Waktu operasi terjadi. |
client_ip | String | 202.**.**.1 | Alamat IP klien yang mengklik tautan. |
env_id | String | 60000****** | ID email yang dikembalikan sistem saat email dikirim. |
from | String | batch****@top | Alamat pengirim. |
rcpt | String | xxx******@aliyun.com | Alamat penerima. |
msg_id | String | 1df******@****** | Field Message-ID dalam email. |
event | String | dm:Trace:Click | Jenis event. |
region | String | cn-hangzhou | Wilayah tempat event terjadi. |
url | String | https://www.aliyun.com | URL yang diklik. |
outbound_ip | String | 102.**.**.1 | Alamat IP outbound yang digunakan untuk mengirim email. |
esp | String | *mail.com | Kategorisasi penyedia email penerima. |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | ID pool IP yang digunakan untuk mengirim email. |
is_dedicated_ip | Boolean | true | Menunjukkan apakah alamat IP khusus digunakan. |
user_agent | String | Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 | User agent untuk event klik. |
tag | String | xxxxx | Tag yang digunakan untuk mengirim email. |
Event pembukaan
Saat event terjadi, EventBridge menerima event contoh berikut.
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Trace:Open",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"operate_time": "2024-04-29T11:25:48",
"client_ip": "202.**.**.1",
"env_id": "60000******",
"from": "batch******@top",
"rcpt": "xxx******@aliyun.com",
"msg_id": "1df******@******",
"event": "dm:Trace:Open",
"region": "cn-hangzhou",
"outbound_ip": "102.**.**.1",
"esp": "*mail.com",
"ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
"is_dedicated_ip": true,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
"tag": "xxxxx"
}
}
Tabel berikut menjelaskan parameter dalam field data.
Parameter | Tipe | Contoh | Deskripsi |
operate_time | String | 2024-04-29T11:25:48 | Waktu operasi terjadi. |
client_ip | String | 192.168.XX.XX | Alamat IP klien yang membuka email. |
env_id | String | 60000****** | ID email yang dikembalikan sistem saat email dikirim. |
from | String | batch****@top | Alamat pengirim. |
rcpt | String | a****@aliyun.com | Alamat penerima. |
msg_id | String | 1df****@example.com | Field Message-ID dalam email. |
event | String | dm:Trace:Click | Jenis event. |
region | String | cn-hangzhou | Wilayah tempat event terjadi. |
outbound_ip | String | 102.**.**.1 | Alamat IP outbound yang digunakan untuk mengirim email. |
esp | String | *mail.com | Kategorisasi penyedia email penerima. |
ip_pool_id | String | 10306c37-****-****-a82f-1dafb56a9dd2 | ID pool IP yang digunakan untuk mengirim email. |
is_dedicated_ip | Boolean | true | Menunjukkan apakah alamat IP khusus digunakan. |
user_agent | String | Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 | User agent untuk event pembukaan. |
tag | String | xxxxx | Tag yang digunakan untuk mengirim email. |
Hasil asinkron validasi alamat graylist
Saat hasil validasi alamat graylist asinkron tersedia, EventBridge menerima event seperti berikut:
{
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"source": "acs.dm",
"specversion": "1.0",
"subject": "acs.dm:cn-hangzhou:123456789098****:215672",
"time": "2020-11-19T21:04:41+08:00",
"type": "dm:Validator:GrayListResult",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2020-11-19T21:04:42Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"request_id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
"submission_time": "1763541726",
"completion_time": "1763541793",
"email": "xxxxxx@yyy.com",
"status": "INVALID",
"sub_status": "MAILBOX_NOT_EXISTS",
"provider": "XXXX",
"is_free_mail": false,
"local_part": "xxxxxx",
"domain_part": "yyy.com"
}
}
Parameter dalam field data:
|
Parameter |
Tipe |
Contoh |
Deskripsi |
|
request_id |
String |
45ef4dewdwe1-7c35-447a-bd93-fab**** |
ID permintaan yang dikembalikan API saat permintaan diajukan. |
|
submission_time |
String |
1763541726 |
Waktu permintaan validasi diajukan. Waktu dalam UTC. |
|
completion_time |
String |
1763541793 |
Waktu validasi selesai. Waktu dalam UTC. |
|
|
String |
xxxxxx@yyy.com |
Alamat email yang divalidasi. |
|
status |
String |
INVALID |
Status alamat email setelah validasi. |
|
sub_status |
String |
MAILBOX_NOT_EXISTS |
Sub-status yang memberikan detail tambahan tentang hasil validasi. |
|
provider |
String |
XXXX |
Kategorisasi penyedia email untuk alamat tersebut. |
|
is_free_mail |
Boolean |
false |
Menunjukkan apakah alamat berasal dari penyedia email gratis. |
|
local_part |
String |
xxxxxx |
Bagian lokal alamat email, diubah menjadi huruf kecil dengan tag sub-addressing dihapus. |
|
domain_part |
String |
yyy.com |
Bagian domain alamat email, diubah menjadi huruf kecil. |
Semua field waktu dalam detail event menggunakan UTC.
2. Kirim email dari test@hangzhou.dmtest.top untuk memverifikasi pengirim.

3. Periksa antrian Message Service (MNS) untuk pesan tersebut. (Contoh ini menggunakan Message Service (MNS) sebagai target event. Anda dapat mengonfigurasi target berbeda.)

4. Kirim email dari alamat pengirim berbeda, lalu periksa EventBridge > event trace. Event muncul dalam jejak tetapi tidak dikirim ke Message Queue for Apache RocketMQ, yang mengonfirmasi bahwa notifikasi hanya dipicu oleh alamat pengirim tertentu.

