X-SMTPAPI Extended Field
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
โปรดทราบ:
เมื่อใช้ SMTP, X-SMTPAPI ต้องเป็นฟิลด์สุดท้ายในส่วนหัว มิฉะนั้นอาจเกิดข้อผิดพลาด xsmtpapi error
เมื่อใช้ SMTP, X-SMTPAPI ต้องถูกเข้ารหัสด้วย base64 มิฉะนั้น หลังจากคำขอ SMTP สำเร็จ อีเมลจะถูก EngageLab สกัดกั้นระหว่างการส่งและถือว่าไม่ถูกต้อง - ข้อผิดพลาด worker:invalid XSMTP-API
เมื่อใช้ API, ให้ส่ง JSON string โดยตรงโดยไม่ต้องเข้ารหัส base64
ความยาวทั้งหมดของ X-SMTPAPI ไม่สามารถเกิน 1M
โครงสร้างและการใช้งาน JSON string ที่ห่อหุ้มใน value มีดังนี้:
to
ประกอบด้วยอาร์เรย์ของที่อยู่อีเมลผู้รับ ระบุผู้รับของอีเมล
{
"to": ["ben@engagelab.com", "joe@engagelab.com"]
}
หมายเหตุ:
to
ที่นี่จะเขียนทับพารามิเตอร์ผู้รับto
- จำนวนผู้รับใน
to
ที่นี่ไม่สามารถเกิน 1000 - หากส่วนหัวของอีเมลมีขนาดน้อยกว่า 1MB จะไม่มีการดำเนินการใดๆ
- หากส่วนหัวของอีเมลมีขนาดใหญ่กว่า 1MB จะตรวจสอบตามจำนวนที่อยู่ที่ส่งมา หากแต่ละที่อยู่มีขนาดน้อยกว่า 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
เป็นอาร์เรย์เชื่อมโยงที่ประกอบด้วยชุดของชื่อแอปพลิเคชัน (unsubscribe, open, click) และการตั้งค่าของพวกมัน การตั้งค่าเหล่านี้จะเขียนทับการตั้งค่าในบัญชีของผู้ใช้
x_smtpapi =
{
"to": ["xxx@qq.com"],
"sub": {"%name%": ["Joe"]},
"filters": {
"subscription_tracking": { # Unsubscribe tracking
"settings": { "enable": "1" }
},
"open_tracking": { # Open tracking
"settings": { "enable": "1" }
},
"click_tracking": { # Click tracking
"settings": { "enable": "1" }
}
}
}
page_id
คำอธิบายการใช้งาน:
page_id สอดคล้องกับฟิลด์ ID ของหน้าการยกเลิกการสมัครเฉพาะที่สร้างขึ้นภายใต้ "การตั้งค่าการส่ง" - "การตั้งค่าการยกเลิกการสมัคร" - "หน้าการยกเลิกการสมัคร" ในคอนโซล EngageLab
ลูกค้าจำเป็นต้องสร้างหน้าการยกเลิกการสมัครในคอนโซล EngageLab ล่วงหน้าก่อนที่จะตั้งค่า page_id ให้กับ ID ที่สอดคล้องกันในระหว่างการส่ง
เมื่อส่ง ให้ส่งพารามิเตอร์ผ่าน page_id โดยตั้งค่าให้กับ ID ของหน้าการยกเลิกการสมัครเฉพาะ ในขณะนี้ ลิงก์การยกเลิกการสมัครและหน้าการยกเลิกการสมัครจะใช้ภาษาหรือสไตล์ที่กำหนดค่าไว้
ลำดับความสำคัญของพารามิเตอร์ page_id สูงกว่าการตั้งค่าหน้าการยกเลิกการสมัครเริ่มต้นที่สอดคล้องกับ API_USER ระหว่างการส่ง
รองรับรูปแบบอาร์เรย์เพื่อระบุหน้าการยกเลิกการสมัคร ซึ่งต้องตรงกับจำนวนผู้รับใน
to
ของ xsmtpapi ตำแหน่งในอาร์เรย์จะสอดคล้องกับแต่ละ "ผู้รับ" ตามตำแหน่งของพวกเขาใน "อาร์เรย์ผู้รับ" หากจำนวนไม่ตรงกับto
จะใช้ page_id เริ่มต้นภายใต้ apiUser นี้แทน
ดูตัวอย่างด้านล่าง:
x_smtpapi =
{
"to": ["xxx@qq.com", "xxx@hotmail.com", "xxx@gmail.com"],
"sub":{"%name%": ["Joe", "Ben", "Michael"]},
"settings":
{
"unsubscribe":
{"page_id": [1, 2, 3]}
}
}