全部产品
Search
文档中心

Direct Mail:Kontrol fitur dengan pengaturan header pesan SMTP

更新时间:Nov 27, 2025

Peringatan

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.

Penting

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.

  1. Buat string JSON dalam format berikut.

{"Version":"1.0","Unsubscribe":{"FilterLevel":"mailfrom_domain","LinkType":"zh-cn"},"OutboundIp":{"IpPoolId":"xxx"}}
  1. Encode string JSON tersebut ke Base64.

eyJWZXJzaW9uIjoiMS4wIiwiVW5zdWJzY3JpYmUiOnsiRmlsdGVyTGV2ZWwiOiJtYWlsZnJvbV9kb21haW4iLCJMaW5rVHlwZSI6InpoLWNuIn0sIk91dGJvdW5kSXAiOnsiSXBQb29sSWQiOiJ4eHgifX0=

  1. 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 unsubscribe
import 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.

  • disabled: Tidak menghasilkan tautan.

  • default: Menggunakan kebijakan default. Tautan unsubscribe dihasilkan saat Anda mengirim email dari alamat pengirim batch ke nama domain tertentu. Untuk informasi selengkapnya, lihat Pembuatan dan filtering tautan untuk fitur unsubscribe.

  • zh-cn: Menghasilkan tautan. Ini untuk instrumentasi konten di masa mendatang.

  • Konten ini dihasilkan untuk en-us guna mendukung instrumentasi konten di masa mendatang.

FilterLevel

Tingkat filter.

  • disabled: Tidak melakukan filter.

  • default: Menggunakan kebijakan default. Alamat batch difilter pada level alamat pengirim. Untuk informasi selengkapnya, lihat Pembuatan dan filtering tautan untuk fitur unsubscribe.

  • mailfrom: Memfilter pada level alamat pengirim.

  • mailfrom_domain: Memfilter pada level domain email.

  • edm_id: Memfilter pada level akun.

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>
Catatan

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:

退订测试.png

Gunakan kotak surat atau tautan unsubscribe Anda sendiri

Saat mengirim email menggunakan SMTP, Anda dapat menambahkan header kustom untuk kotak surat atau tautan unsubscribe Anda sendiri. Siapkan terlebih dahulu kotak surat atau tautan tersebut. Contoh Python berikut menunjukkan cara menambahkan header: msg['List-Unsubscribe'] = '<mailto:unsubscribe@example.com>,<https://example.com/unsubscribe>'.

Header kustom ini menggantikan tautan unsubscribe sistem default. Anda tidak perlu menyertakan header X-AliDM-Settings.

Untuk informasi selengkapnya, lihat IP Spesifikasi Khusus.