X-SMTPAPI 擴展字段
X-SMTPAPI 是 EngageLab 為開發者提供的郵件個性化定制的處理方式。
EngageLab 會檢索 key 為X-SMTPAPI
的頭域資訊,如果發現含有此頭域,則解析 value 的值用來改變郵件的處理方式。 開發者在使用 SMTP 和 API 接入時都可以使用此字段。
API 方式:
x_smtpapi = {
"to": ["d@hotmail.com",'i@hotmail.com'],
"sub": {
"%name%": ['jack', 'rose'],
"%money%": ['199', '299'],
},
}
params['xsmtpapi'] = simplejson.dumps(x_smtpapi)
SMTP 方式:
x_smtpapi = {
"to": ["d@hotmail.com",'i@hotmail.com'],
"sub": {
"%name%": ['jack', 'rose'],
"%money%": ['199', '299'],
},
}
msg['X-SMTPAPI'] = Header(base64.b64encode(simplejson.dumps(x_smtpapi)))
SMTP 服務器會對郵件中 key 為`X-SMTPAPI`的頭域資訊做格式檢查。如果不符合上述要求,則會報`xsmtpapi error`的錯誤。
需要注意的是:
1. SMTP 調用時,X-SMTPAPI 必須是頭域欄位的最後一個。否則,可能導致`xsmtpapi error`的錯誤
2. SMTP 調用時,X-SMTPAPI 必須是 base64 編碼封裝。否則,SMTP 成功請求後,在投遞中被 EngageLab 攔截判為無效郵件- `worker:invalid XSMTP-API`的錯誤
3. API 調用時,直接傳入 JSON 字串即可,無需 base64 編碼封裝
4. X-SMTPAPI 的總長度不能超過 1M
value 封裝的 JSON 字串的結構和用途見下:
to
含有收件人地址的數組,指定郵件的收件人.
{
"to": ["ben@engagelab.com", "joe@engagelab.com"]
}
注意:
- 這裡的
to
會覆蓋收件人參數to
- 這裡的
to
的收件人個數不能超過 1000- 如果郵件頭小於1MB,不做處理
- 如果郵件頭大於1MB,按照提交過來的地址數,看單個地址是否小於10KB,如小於10KB,可以發送; 如大於10KB,不可發送
sub
是一個關聯數組。 它的key
是「變數」,value
是「替換值數組」.
用法解釋:每一個「變數」對應一個「替換值數組」,在做郵件內容替換時,每一個「收件人」按其在「收件人數組」中出現的位置使用「替換值數組」中相應位置的值來替換「變數」的值。
參見如下示例:
# 郵件內容
親愛的%name%:
您好! 您本月在 XX 的消費金額為:%money%元。
#---------------------------------------------------
# X-SMTPAPI
{
"to": ["ben@engagelab.com", "joe@engagelab.com"],
"sub":
{
"%name%": ["Ben", "Joe"],
"%money%":[288, 497]
}
#---------------------------------------------------
# ben@engagelab.com 收到的郵件:
親愛的 Ben:
您好!您本月在 xx 的消費金額為:288 元。
#---------------------------------------------------
# joe@engagelab.com 收到的郵件:
親愛的 Joe:
您好! 您本月在 xx 的消費金額為:497 元。
apps
是包含了一組應用名(退訂、打開、點擊)和它們設定的關聯數組。 這些設定會覆蓋它們在用戶帳戶中的設定。
x_smtpapi =
{
"to": ["xxx@qq.com"],
"sub": {"%name%": ["Joe"]},
"filters": {
"subscription_tracking": { # 退訂追蹤
"settings": { "enable": "1" }
},
"open_tracking": { # 打開追蹤
"settings": { "enable": "1" }
},
"click_tracking": { # 點擊追蹤
"settings": { "enable": "1" }
}
}
page_id
用法解釋:
page_id 對應的是 EngageLab 控制台“發送設定”-“退訂設定”-“退訂頁面”下所創建的某個退訂頁面的 ID 欄位。
客戶需要在 EngageLab 控制台預先創建退訂頁面,之後才能在發送時給 page_ id 設定成對應的 ID.
發送時通過 page_id 傳參,值設定為某個退訂頁面的 ID,此時退訂連結、退訂頁面均為所配寘的語言及樣式。
page_id 傳參的優先順序高於發送時 API_USER 所對應的默認的退訂頁面設定。
支持數組形式來指定退訂頁面,需與 xsmtpapi 中的 to 個數一致。 數組位置和每一個「收件人」按其在「收件人數組」中出現的位置進行一一對應。 如果出現和 to 的個數不匹配的情况,則改用使用客戶此 apiUser 下的默認 page_id.
參見如下示例:
x_smtpapi =
{
"to": ["xxx@qq.com", "xxx@hotmail.com", "xxx@gmail.com"],
"sub":{"%name%": ["Joe", "Ben", "Michael"]},
"settings":
{
"unsubscribe":
{"page_id": [1, 2, 3]}
}
}