本文介紹Direct Mail服務如何通過整合阿里雲事件匯流排服務,實現郵件投遞結果的分發通知。
使用者成功進行事件匯流排相關配置後,通過Direct Mail服務發送的郵件,其投遞結果將按照在事件匯流排中設定的事件分發規則,發送至指定的事件目標(DingTalk、輕量訊息佇列、HTTP等),實現投遞結果的非同步擷取。
下文將詳細介紹如何完成事件分發設定。
事件匯流排服務開通與訪問授權
1.在阿里雲首頁搜尋事件匯流排或 EventBridge,免費開通事件匯流排服務




建立事件規則
在控制台-事件匯流排-雲端服務專用事件匯流排-建立規則,建立Direct Mail服務的事件分發規則,配置基本資料,填寫規則名稱和描述;


配置事件模式,事件來源類型為阿里雲官方事件來源,事件來源選擇acs.dm,事件類型目前支援發送失敗、發送成功、點選連結、開啟郵件,使用者可按需添加,未添加的事件類型會被過濾。

配置事件目標,選擇服務類型(DingTalk、輕量訊息佇列、HTTP等,相關文檔:管理事件規則)


這裡以輕量訊息佇列為例,指定發送到的目標隊列(輕量訊息佇列服務的開通與隊列的建立請參考下文“開通輕量訊息佇列並建立訊息接收的隊列”章節),訊息體預設選擇完整事件,不進行base64編碼,重試和死信選型可按需設定,設定完成後點擊建立規則。

規則建立完成後,可在事件匯流排概覽中進行查看。

事件類型和修改方式
目前支援的事件類型
事件類型 | type參數值 |
dm:Deliver:Fail | |
dm:Deliver:Succeed | |
dm:Feedback:FblReport | |
dm:Trace:Click | |
dm:Trace:Open |
修改各類事件的統計
左側導覽列點擊事件規則-編輯事件模式-事件類型,可對事件類型進行修改。


開啟或者點擊事件的統計的前提
如果需要對郵件的開啟和點擊行為事件進行通知分發,前期是開啟資料跟蹤功能,詳細操作可參考如何開啟資料跟蹤功能?。
Direct Mail控制台開啟事件分發功能
在Direct Mail控制台開啟事件分發開關。

接收事件分發訊息,驗證鏈結路已通
以上文流程設定的事件目標輕量訊息佇列為例,驗證事件分發鏈路。
開通輕量訊息佇列並建立訊息接收的隊列
進入輕量訊息佇列控制台,若未開通輕量訊息佇列服務,則按引導先開通輕量訊息佇列服務。
單擊左側導覽列中隊列,進入隊列頁面。
單擊頁面建立隊列按鈕,將會彈出建立隊列對話方塊。
輸入隊列名稱(隊列名稱使用者可自由定義,本樣本建立
delivery-result-queue名稱的隊列),其他按預設值即可,然後單擊確認。

觸發事件分發並查看
使用Direct Mail服務發送一封郵件後,在事件匯流排控制台查看到事件的追蹤記錄;


查看事件分發目標的結果
開啟輕量訊息佇列控制台,在隊列列表選擇事件匯流排目標配置的隊列(案例中為delivery-result-queue)點擊收發訊息按鈕,跳轉至收發訊息快速體驗頁面;

點擊頁面下方接收訊息按鈕,可查看到剛剛的事件訊息,點擊詳情,可查看到對應的完整事件訊息內容(可以看到事件ID與事件匯流排中的記錄一致,事件即成功分發到了輕量訊息佇列);


設定發信地址級事件分發樣本
按照以上樣本流程配置的事件分發對Direct Mail服務下所有的發信網域名稱和地址生效,使用者可根據實際業務需求,修改事件規則的JSON串,來實現按照發信地址等過濾條件進行事件分發。
以下是指定發信地址test@hangzhou.dmtest.top進行Direct Mail事件分發的樣本,通過進行規則配置,使得只有從test@hangzhou.dmtest.top發出的郵件,其記錄訊息才會由事件匯流排分發到事件目標。
1.在建立事件規則時,在模式內容中指定事件模式的具體內容,對指定欄位內容進行過濾。

本樣本中,模式內容如下:
{
"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"
]
}
}這裡是一個完整的事件訊息體,使用者可基於事件體的內容和結構,參考事件模式,編寫事件規則的模式內容。
模式內容中的所有欄位名都必須存在於事件體中,否則此事件訊息會被過濾。
事件模式裡的欄位名必須和事件中的欄位名具有相同嵌套結構。
事件模式是逐個字元精確匹配的 ,需注意大小寫,匹配過程中不會對字串進行任何標準化的操作。
要匹配的值遵循JSON規則:用引號引起來的字串、數字以及不帶引號的關鍵字true、false和null。
事件模式支援OR的語義,事件模式比對中各個Key支援AND語義,Key的Value值支援數組OR的語義。
以下是事件預設的訊息體
dm:Deliver:Succeed
{
"datacontenttype": "application/json;charset=utf-8",
"aliyunaccountid": "1491110661959791",
"data": {
"rcpt": "example@example.com",
"deliver_time": "2024-05-22T08:27:42Z",
"err_code": "250",
"failed_type": "SendOk",
"env_id": "600000083914199845",
"send_time": "2024-05-22T08:27:41Z",
"err_msg": "250 Send Mail OK",
"header": {},
"from": "example2@aliyun.com",
"event": "dm:Deliver:Succeed",
"region": "cn-hangzhou",
"msg_id": "d93a742c-adec-487d-8c39-98069c583760@example.net",
"account": "example2@aliyun.com",
"status": 0
},
"subject": "acs:dm:cn-hangzhou:1491110661959791:*",
"aliyunoriginalaccountid": "1491110661959791",
"source": "acs.dm",
"type": "dm:Deliver:Succeed",
"aliyunpublishtime": "2024-05-22T08:27:42.539Z",
"specversion": "1.0",
"aliyuneventbusname": "default",
"id": "1223c134-b66d-4d53-b05e-780c0261ce22",
"time": "2024-05-22T08:27:42.462Z",
"aliyunregionid": "cn-hangzhou"
}dm:Deliver:Fail
{
"datacontenttype": "application/json;charset=utf-8",
"aliyunaccountid": "1406423658557179",
"data": {
"rcpt": "dm-cccxcvzsupp***@example.com",
"channel_name": "bg:alibabak",
"deliver_time": "2025-05-06T08:25:35",
"err_code": "554",
"outbound_ip": "8.219.XX.XX",
"failed_type": "SmtpNxBox",
"env_id": "576461125340473909",
"send_time": "2025-05-06T08:25:30",
"err_msg": "554 RCPT (dm-cccxcvzsupport@example.com) dosn't exist",
"header": {},
"from": "dm@email.example.com",
"event": "dm:Deliver:Fail",
"region": "ap-southeast-1",
"msg_id": "d00cacd9-4c40-4b0a-b049-ea35b5d06573@email.example.com",
"account": "dm@email.example.com",
"status": 2
},
"subject": "acs:dm:ap-southeast-1:1406423658557179:*",
"aliyunoriginalaccountid": "1406423658557179",
"source": "acs.dm",
"type": "dm:Deliver:Fail",
"aliyunpublishtime": "2025-05-06T08:25:35.634Z",
"specversion": "1.0",
"aliyuneventbusname": "default",
"id": "b2063370-2e17-4be8-b19e-d912690f5aa1",
"time": "2025-05-06T08:25:35.622Z",
"aliyunregionid": "ap-southeast-1"
}dm:Trace:Click
{
"datacontenttype": "application/json;charset=utf-8",
"aliyunaccountid": "1406423658557179",
"data": {
"rcpt": "dm-supp***@example.com",
"env_id": "576461125225614607",
"operateTime": "2025-05-06T08:33:41",
"from": "dm@email.example.com",
"client_ip": "42.120.XX.XXX",
"userKp": "1406423658557179",
"event": "dm:Trace:Click",
"region": "ap-southeast-1",
"msg_id": "8c34b82a-9a94-4e06-9579-963e846a688c@email.example.com",
"url": "https://www.alibabacloud.com/help/zh/direct-mail/user-guide/set-up-eventbridge"
},
"subject": "acs:dm:ap-southeast-1:1406423658557179:*",
"aliyunoriginalaccountid": "1406423658557179",
"source": "acs.dm",
"type": "dm:Trace:Click",
"aliyunpublishtime": "2025-05-06T08:33:41.472Z",
"specversion": "1.0",
"aliyuneventbusname": "default",
"id": "0bf882fe-c9f8-4a29-bf26-7f0df7540c1c",
"time": "2025-05-06T08:33:41.469Z",
"aliyunregionid": "ap-southeast-1"
}dm:Trace:Open
{
"datacontenttype": "application/json;charset=utf-8",
"aliyunaccountid": "1406423658557179",
"data": {
"rcpt": "dm-supp***@example.com",
"env_id": "576461125225614607",
"operateTime": "2025-05-06T08:33:36",
"from": "dm@email.example.com",
"client_ip": "42.120.XX.XXX",
"userKp": "1406423658557179",
"event": "dm:Trace:Open",
"region": "ap-southeast-1",
"msg_id": "8c34b82a-9a94-4e06-9579-963e846a688c@email.example.com"
},
"subject": "acs:dm:ap-southeast-1:1406423658557179:*",
"aliyunoriginalaccountid": "1406423658557179",
"source": "acs.dm",
"type": "dm:Trace:Open",
"aliyunpublishtime": "2025-05-06T08:33:36.336Z",
"specversion": "1.0",
"aliyuneventbusname": "default",
"id": "a29d082d-3a21-4fa1-91e0-4a4ba183fd73",
"time": "2025-05-06T08:33:36.335Z",
"aliyunregionid": "ap-southeast-1"
}dm:Feedback:FblReport
{
"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@example.com",
"block_email": "to@example.com",
"subject": "Hello Mr.xxx",
"message_id": "<msgid***@example.com>",
"block_time": "1726821667",
"fbl_isp": "outlook**",
"fingerprint": "SMTPD_abc****"
}
}更多欄位說明:Direct Mail事件
事件詳情裡的時間欄位統一是UTC時間格式
2.進行發信驗證,通過test@hangzhou.dmtest.top發送一封郵件;

3.在輕量訊息佇列的隊列中(本樣本和設定事件分發流程一樣,採用輕量訊息佇列作為事件目標接收事件訊息,使用者可自行設定事件目標)可查詢到此條訊息。

4.使用其他發信地址發信後,在事件匯流排-事件追蹤中查詢到了該事件的詳情,但在輕量訊息佇列側,不會收到此條事件訊息,即實現了指定發信地址的回調通知。

