Jika item konfigurasi diatur secara salah, email tidak dapat dikirim. Selalu uji pengaturan Anda sebelum menerapkannya di lingkungan produksi.
Direct Mail memungkinkan Anda mengontrol fitur tertentu melalui header pesan X-AliDM-Settings.
X-AliDM-Settings bersifat case-sensitive. Salin dan tempel header tersebut untuk menghindari kesalahan.
Sebagai contoh, untuk menghasilkan tautan unsubscribe dengan tingkat filter diatur ke domain email, Anda dapat menggunakan kebijakan default. Hal ini berguna saat mengirim email dari alamat pengirim batch ke nama domain tertentu.
Buat string JSON dalam format berikut.
{"Version":"1.0","Unsubscribe":{"FilterLevel":"mailfrom_domain","LinkType":"zh-cn"},"OutboundIp":{"IpPoolId":"xxx"}}Encode string JSON tersebut ke Base64.
eyJWZXJzaW9uIjoiMS4wIiwiVW5zdWJzY3JpYmUiOnsiRmlsdGVyTGV2ZWwiOiJtYWlsZnJvbV9kb21haW4iLCJMaW5rVHlwZSI6InpoLWNuIn0sIk91dGJvdW5kSXAiOnsiSXBQb29sSWQiOiJ4eHgifX0=Atur string yang telah diencode sebagai nilai header pesan X-AliDM-Settings. Setelah mengirim email, periksa header pesan untuk memastikan X-AliDM-Settings telah diatur dengan benar.
X-AliDM-Settings: eyJWZXJzaW9uIjoiMS4wIiwiVW5zdWJzY3JpYmUiOnsiRmlsdGVyTGV2ZWwiOiJtYWlsZnJvbV9kb21haW4iLCJMaW5rVHlwZSI6InpoLWNuIn0sIk91dGJvdW5kSXAiOnsiSXBQb29sSWQiOiJ4eHgifX0=Contoh Python berikut menunjukkan cara menambahkan header pesan: msg.add_header("X-AliDM-Settings", Create_base64Trace)
Contoh berikut menunjukkan cara menghasilkan nilai X-AliDM-Settings dalam bahasa pemrograman lain:
import json
import base64
# Logika unsubscribe
Create_json = {
"Version" : "1.0",
"Unsubscribe" : {
# Pilih parameter sesuai kebutuhan.
# "LinkType": "disabled", # Jangan hasilkan header pesan unsubscribe.
"LinkType": "default", # Kebijakan default, yang mengaktifkan instrumentasi untuk tautan unsubscribe en-us.
# "FilterLevel": "disabled", # Jangan lakukan filter.
# "FilterLevel": "default", # Kebijakan default, yang memfilter alamat batch pada level alamat pengirim.
# "FilterLevel": "mailfrom", # Filter pada level alamat pengirim.
"FilterLevel": "mailfrom_domain" # Filter pada level domain email.
# "FilterLevel": "edm_id" # Filter pada level akun.
},
"OutboundIp" : {
"IpPoolId" : "exxxxxxe-4xx0-4xx3-8xxa-7xxxxxxxxxxxxf" # Jika diperlukan, beli alamat IP spesifikasi khusus di Konsol Direct Mail dan dapatkan ID kolam IP.
}
}
Create_jsonTrace = json.dumps(Create_json)
Create_base64Trace = str(base64.b64encode(Create_jsonTrace.encode('utf-8')), 'utf-8')
# print(base64Trace)
msg.add_header("X-AliDM-Settings", Create_base64Trace)
# Logika unsubscribeimport java.util.Base64;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.nio.charset.StandardCharsets;
private static String generateDmSettingsHeader() {
String jsonContent = """
{
"Version": "1.0",
"Unsubscribe": {
"LinkType": "default", // Kebijakan default, yang mengaktifkan instrumentasi untuk tautan unsubscribe en-us.
"FilterLevel": "mailfrom_domain" // Filter pada level domain email.
},
"OutboundIp": {
"IpPoolId": "exxxxxxe-4xx0-4xx3-8xxa-7xxxxxxxxxxxxf" // Jika diperlukan, beli alamat IP spesifikasi khusus di Konsol Direct Mail dan dapatkan ID kolam IP.
}
}
""";
JsonElement jsonElement = JsonParser.parseString(jsonContent);
String compactJson = new Gson().toJson(jsonElement);
return Base64.getEncoder()
.encodeToString(compactJson.getBytes(StandardCharsets.UTF_8));
}// Bangun JSON.
$createJson = [
"Version" => "1.0",
"Unsubscribe" => [
"LinkType" => "default", // Kebijakan default.
"FilterLevel" => "mailfrom_domain" // Filter pada level domain email.
],
"OutboundIp" => [
"IpPoolId" => "exxxxxxe-4xx0-4xx3-8xxa-7xxxxxxxxxxxxf" // Ganti dengan ID kolam IP Anda.
]
];
// Konversi ke string JSON.
$jsonString = json_encode($createJson, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// Encode ke Base64.
$base64Trace = base64_encode($jsonString);
// Tambahkan header pesan kustom.
$mail->addCustomHeader('X-AliDM-Settings', $base64Trace);Contoh Java 2:
package ut_dm;
import com.alibaba.fastjson.JSON;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.HashMap;
import java.util.Map;
public class AliDMSetting {
static public enum UnsubFilterLevel {
DISABLED("disabled"),
DEFAULT("default"),
MAILFROM("mailfrom"),
MAILFROM_DOMAIN("mailfrom_domain"),
EDM_ID("edm_id");
private final String value;
UnsubFilterLevel(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
static public enum UnsubLinkType {
DISABLED("disabled"), // Jangan tambahkan tautan unsubscribe.
DEFAULT("default"), // Kebijakan default. Untuk email pemasaran yang dikirim ke alamat Google dan Yahoo, aktifkan instrumentasi untuk tautan unsubscribe en_US.
ZH_CN("zh-cn"), // Bahasa Tionghoa (Sederhana)
EN_US("en-us"); // Bahasa Inggris (AS), default
private final String value;
UnsubLinkType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
public static String X_ALIDM_SETTING_HEADER_KEY = "X-AliDM-Settings";
public static String X_ALIDM_SETTING_VERSION = "1.0";
private UnsubLinkType unsubLinkType;
private UnsubFilterLevel unsubFilterLevel;
private String ipPoolId;
public AliDMSetting(UnsubLinkType unsubLinkType, UnsubFilterLevel unsubFilterLevel, String ipPoolId) {
this.unsubLinkType = unsubLinkType;
this.unsubFilterLevel = unsubFilterLevel;
this.ipPoolId = ipPoolId;
}
private String generateHeaderValue() {
HashMap<String,String> unsubSetting = new HashMap<String,String>();
unsubSetting.put("LinkType", unsubLinkType.getValue());
unsubSetting.put("FilterLevel", unsubFilterLevel.getValue());
HashMap<String,Object> setting = new HashMap<>();
setting.put("Version", X_ALIDM_SETTING_VERSION);
setting.put("Unsubscribe", unsubSetting);
if(StringUtils.isNotBlank(ipPoolId)) {
Map<String, String> outboundIpsMap = new HashMap<>();
outboundIpsMap.put("IpPoolId", ipPoolId);
setting.put("OutboundIp", outboundIpsMap);
}
return new String( Base64.encodeBase64(JSON.toJSONString(setting).getBytes()) );
}
public void generateHeader(MimeMessage message) throws MessagingException {
message.addHeader(X_ALIDM_SETTING_HEADER_KEY, generateHeaderValue());
}
}Tabel berikut menjelaskan fitur-fitur yang didukung.
Fitur | Kunci tingkat pertama | Kunci tingkat kedua | Deskripsi |
Fitur unsubscribe | Berhenti Berlangganan | LinkType | Jenis tautan unsubscribe yang akan dihasilkan.
|
FilterLevel | Tingkat filter.
| ||
Fitur IP spesifikasi khusus | OutboundIp | IpPoolId | ID kolam alamat IP spesifikasi khusus. Jika Anda telah membeli alamat IP spesifikasi khusus, gunakan parameter ini untuk menentukan alamat IP outbound saat mengirim email. |
Contoh header pesan untuk penerima:
Contoh berikut telah disunting demi privasi. Untuk mengambil tautan unsubscribe dari header pesan, buka kotak surat penerima dan unduh atau lihat file .eml dari email uji coba.
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <http://dm-cn.aliyuncs.com/trace/v1/unsubscribe?lang=zh-cn&sign=cd03d4d252bxxxxxxxx0d99c&token=eyJjYW1wYWlnbl90aW1lIjoxNzA2MjU3NjxxxxxxxxxxxxxxxxjAzNTUxNDMiLCJtYWlsX2Zyb20iOiJ6azFAdDEuemtkbS54eXoiLCJtYWlsX3RvIjoiemsxQHprZG0ueHl6In0%3D&version=1.0>Header List-Unsubscribe-Post: List-Unsubscribe=One-Click mengontrol fitur unsubscribe satu klik.
Header ini menyatakan bahwa email mendukung unsubscribe satu klik. Aksi unsubscribe diselesaikan langsung melalui permintaan HTTP POST tanpa memerlukan konfirmasi tambahan dari pengguna.
Jika header ini dihilangkan atau menggunakan nilai yang tidak standar atau kosong, proses unsubscribe mungkin kembali ke metode tradisional
mailto:atau pengalihan tautan, yang memerlukan konfirmasi manual dari pengguna.Kebijakan penerima menentukan apakah tombol unsubscribe ditampilkan. Beberapa penyedia layanan hanya menampilkannya jika alamat pengirim atau nama domain memiliki reputasi baik. Masuk ke kotak surat penerima untuk menguji hasilnya.
Jika tombol tidak muncul, Anda juga dapat menggunakan perintah berikut untuk menguji tautan yang dihasilkan.
Perintah Uji Linux:
Contoh berikut telah disunting demi privasi. Untuk mengambil tautan unsubscribe dari header pesan, buka kotak surat penerima dan unduh atau lihat file .eml dari email uji coba.
curl -X POST "http://dm-cn.aliyuncs.com/trace/v1/unsubscribe?lang=zh-cn&sign=cd03d4d252bxxxxxxxx0d99c&token=eyJjYW1wYWlnbl90aW1lIjoxNzA2MjU3NjxxxxxxxxxxxxxxxxjAzNTUxNDMiLCJtYWlsX2Zyb20iOiJ6azFAdDEuemtkbS54eXoiLCJtYWlsX3RvIjoiemsxQHprZG0ueHl6In0%3D&version=1.0"
atau
curl -X POST -d "lang=zh-cn&sign=cd03d4d252bxxxxxxxx0d99c&token=eyJjYW1wYWlnbl90aW1lIjoxNzA2MjU3NjxxxxxxxxxxxxxxxxjAzNTUxNDMiLCJtYWlsX2Zyb20iOiJ6azFAdDEuemtkbS54eXoiLCJtYWlsX3RvIjoiemsxQHprZG0ueHl6In0%3D&version=1.0" "http://dm-cn.aliyuncs.com/trace/v1/unsubscribe"Contoh hasil:

Untuk informasi selengkapnya, lihat IP Spesifikasi Khusus.