全部產品
Search
文件中心

Direct Mail:如何開啟資料跟蹤功能?

更新時間:Jul 13, 2024

本文介紹如何開啟開啟和點擊資料跟蹤功能。

前置條件

1.在Direct Mail控制台建立發信網域名稱,海外叢集可以不備案網域名稱,華東叢集需要備案,單擊頁面上方 備案 > ICP 備案系統 進入備案頁面,並填寫所有備案所需資訊。

2.網域名稱配置時,需配置可選項 CNAME 驗證。CNAME值是連結跳轉記錄,協助您用來收集開啟點擊資料。CNAME驗證通過後,在控制台查詢網域名稱的狀態為驗證通過

網域名稱配置頁

詳情請見:如何驗證配置的網域名稱DNS解析是否生效

3.選擇狀態為 驗證通過 的網域名稱所建立的發信地址發信。

4.埋點行為強依賴標籤。在設定郵件標籤,建立標籤,後續發信使用該標籤。

注意點

  1. 開啟和點擊行為資料每個整點小時會統計上一個小時內的資料並且持久化,本小時內的埋點資料在下個整點一刻後可以在控制台查看。

約束

  1. 發信必須使用郵件標籤,且郵件標籤需要真實存在。

  2. 僅支援內容為html的埋點,郵件內容需要含文檔主體元素,形如<body>您的發信內容</body>

  3. 對於點擊行為,待埋點的超連結需要以html引用的方式存在,即在html內容<html><body><a href=待埋點超連結></body></html>這種形式,使用者待埋點超連結需要是互連網訪問的連結,首碼是http://或者https://的。點擊行為的實現原理是檢測到符合上述規範的待埋點連結,然後替換為我們採集服務的連結,待埋點連結會作為採集服務鏈結接的一個參數,發出去的郵件會帶上採集服務鏈結接。當收信人點選連結的時候,首先跳轉到我們的採集服務,採集服務對連結做合法性檢測、解析參數、行為搜集等,然後重新導向跳轉到您的埋點連結服務。

使用方式

1.控制台發信

1.在建立發送郵件- 任務時,並勾選 開啟 郵件跟蹤,會包含開啟和行為資料。

開啟開啟點擊資料跟蹤

2.內容需符合上述約束

2.API或者SDK發信

  1. API或者SDK發信時,設定Tag為真實存在的Tag,ClickTrace設定為字串”1”。

  2. 利用setHtmlBody設定發信內容,內容需符合上述約束

3.SMTP發信

參照SMTP發信支援按照Tag埋點統計開啟郵件資料設定頭X-AliDM-Trace,其中Tag需要必須真實存在,OpenTrace對應值是字串"1",LinkTrace對應值是字串"1"。目前僅提供了Java的範例,其他語言按照該邏輯修改即可。

限制

  1. smtp發信的郵件內文mime類型為”text/html;charset=UTF-8”,建議將內容傳輸編碼頭Content-Transfer-Encoding設定為”quoted-printable”。內容需符合上述約束

Python樣本:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative')
texthtml = MIMEText('''<html><body><a href="https://www.aliyun.com">郵件跟蹤</a></body></html>''', _subtype='html',
                    _charset='UTF-8')
if 'Content-Transfer-Encoding' in msg:
    # 如果已設定,則選擇第一個值進行替換(通常情況下,這個頭只會有一個值)
    msg.replace_header('Content-Transfer-Encoding', 'quoted-printable')
else:
    # 如果未設定,則添加
    msg['Content-Transfer-Encoding'] = 'quoted-printable'
msg.attach(texthtml)

Java樣本:

import javax.mail.internet.MimeBodyPart;
// 假設 msg 是你要操作的 MimeMessage 對象,這裡以 MimeBodyPart 為例進行示範

// 建立訊息主體部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent("<html><body><a href=\"https://www.aliyun.com\">郵件跟蹤</a></body></html>", "text/html; charset=UTF-8");
// 檢查是否已設定'Content-Transfer-Encoding'
String[] cte = textPart.getHeader("Content-Transfer-Encoding");
if (cte == null || cte.length == 0) {
    // 如果未設定,則添加
    textPart.addHeader("Content-Transfer-Encoding", "quoted-printable");
} else {
    // 如果已設定,則選擇第一個值進行替換(通常情況下,這個頭只會有一個值)
    textPart.setHeader("Content-Transfer-Encoding", "quoted-printable");
}