Todos os produtos
Search
Central de documentação

Direct Mail:Configurar roteamento de eventos

Última atualização: Jun 27, 2026

Integre o DirectMail ao EventBridge para rotear notificações de entrega de e-mail para destinos como DingTalk, Message Queue for Apache RocketMQ e endpoints HTTP.

Após a configuração do barramento de eventos, os resultados de entrega dos e-mails enviados pelo DirectMail são roteados para os destinos especificados (como DingTalk, Message Queue for Apache RocketMQ e HTTP) conforme suas regras de roteamento. Isso permite recuperar os resultados de entrega de forma assíncrona.

Siga as etapas abaixo para configurar o roteamento de eventos.

Ativar distribuição de eventos

Ative a opção de notificação de eventos no console do DirectMail.

b3070724625e6b3377fe779d96bf76ec

Ativar e autorizar o EventBridge

  1. Pesquise por EventBridge na página inicial do Alibaba Cloud e ative o serviço gratuitamente.

image.png

image.png

Criar uma regra de evento

No console do EventBridge, acesse o barramento de eventos para serviços em nuvem > Crie uma regra. Insira um nome e uma descrição para a regra do DirectMail.

image.png

Configure o padrão de evento. Selecione Alibaba Cloud official event source como tipo de origem do evento e acs.dm como origem do evento. Tipos de evento suportados: Send Failure, Send Success, Link Click e Email Open. Adicione os tipos de evento conforme necessário; os tipos não suportados são filtrados automaticamente.

Para configurar o destino do evento, selecione um tipo de serviço como DingTalk, Message Service (MNS) ou HTTP. Para mais detalhes, consulte Gerenciar regras de evento.

Este exemplo utiliza o Message Queue for MQTT como destino do evento. Especifique a fila de destino. (Para ativar o Message Queue for MQTT e criar uma fila, siga a seção "Ativar o Message Queue for MQTT e criar uma fila de recebimento" abaixo.) O corpo da mensagem padrão é o evento completo sem codificação Base64. Configure as opções de nova tentativa e carta morta conforme necessário e clique em Crie uma regra.

Após criar a regra, visualize-a no console do EventBridge.

image.png

Tipos de evento e modificações

Tipos de evento suportados

Tipo de evento

Valor do parâmetro type

Falha na entrega de e-mail

dm:Deliver:Fail

Entrega de e-mail bem-sucedida

dm:Deliver:Succeed

Dados de relatório FBL de e-mail

dm:Feedback:FblReport

Dados de nova inscrição de e-mail

dm:Feedback:Subscribe

Dados de cancelamento de inscrição de e-mail

dm:Feedback:UnSubscribe

Evento de clique

dm:Trace:Click

Evento de abertura

dm:Trace:Open

Resultado assíncrono da validação de endereço em lista cinza

dm:Validator:GrayListResult

Nota

O EventBridge recebe eventos por 30 dias após o envio de um e-mail.

Configurar estatísticas para tipos de evento

Clique em Event Rules > Edit Event Pattern > Event Type para modificar o tipo de evento.

image.png

image.png

Pré-requisitos para rastreamento de aberturas e cliques

Para receber notificações sobre eventos de abertura e clique em e-mails, ative primeiro o rastreamento de dados. Consulte Ativar rastreamento de dados.

Receber mensagens de evento e verificar links

Este exemplo utiliza a fila de mensagens leve configurada anteriormente para validar o caminho de entrega do evento.

Configurar uma fila de mensagens leve

  1. Acesse o console do Message Queue for MQTT. Caso o Message Queue for MQTT não esteja ativado, siga as instruções na tela para ativá-lo.

  2. No painel de navegação à esquerda, clique em Queues.

  3. Clique em Create Queue.

  4. Insira um nome para a fila, como delivery-result-queue. Mantenha as configurações padrão e clique em OK.

image.png

Acionar distribuição de eventos

Após enviar um e-mail pelo DirectMail, visualize o rastro do evento no console do EventBridge.image.png

image.png

image.png

Resultados no destino do evento

No console da fila de mensagens leve, selecione a fila configurada como destino do EventBridge (delivery-result-queue) e clique em Send and Receive Messages.

image.png

Clique em Receive Messages para visualizar a mensagem do evento e, em seguida, clique em Details para ver o conteúdo completo. A entrega no Message Service é confirmada se o ID do evento corresponder ao registro do EventBridge.image.png

image.png

image.png

Exemplo: Configurar encaminhamento de eventos por endereço do remetente

A distribuição de eventos configurada acima aplica-se a todos os domínios e endereços de envio no DirectMail. É possível modificar o JSON da regra de evento para filtrar eventos por condições específicas, como um endereço de remetente.

O exemplo a seguir configura uma regra que roteia eventos do DirectMail do endereço de remetente test@hangzhou.dmtest.top para um destino de evento.

  1. Ao criar uma regra de evento, especifique um padrão de evento para filtrar eventos por seus campos.

image.png

Este exemplo utiliza o seguinte padrão:

{
    "source": [
        "acs.dm"
    ],
    "type": [
        "dm:Deliver:Fail",
        "dm:Deliver:Succeed",
        "dm:Trace:Click",
        "dm:Trace:Open",
        "dm:Feedback:FblReport"
    ],
    "data": {
        "from": [
            "test@hangzhou.dmtest.top"
        ]
    }
}

Abaixo está um corpo completo de mensagem de evento. Crie um padrão de evento com base em seu conteúdo e estrutura.

  • Todos os nomes de campo no padrão de evento devem existir no corpo do evento.

  • A estrutura aninhada dos nomes de campo no padrão de evento deve corresponder à do evento.

  • A correspondência é exata, caractere por caractere, e diferencia maiúsculas de minúsculas. As strings não são normalizadas.

  • Os valores no padrão devem seguir as regras JSON: strings entre aspas, números e as palavras-chave sem aspas true, false e null.

  • Os padrões de evento suportam lógica AND e OR. Chaves (key) diferentes dentro de um padrão usam lógica AND. Uma matriz de valores para uma key usa lógica OR.

Corpo padrão da mensagem de evento:

Falha na entrega de e-mail

Quando há falha na entrega de um e-mail, o EventBridge recebe um evento semelhante ao exemplo a seguir.

{
  "data": {
    "header": {
      "X-Notify-Message-ID": "test******@******"
    },
    "env_id": "60000******",
    "account": "batch******@top",
    "from": "batch******@top",
    "rcpt": "xxx******@aliyun.com",
    "msg_id": "1df******@******",
    "channel_name": "bg:vip_*",
    "outbound_ip": "8.*.*.7",
    "send_time": "2024-04-29T11:07:04",
    "deliver_time": "2024-04-29T11:07:12",
    "status": "2",
    "event": "dm:Deliver:Fail",
    "region": "cn-hangzhou",
    "err_code": "554",
    "err_msg": "554  RCPT xxx******@aliyun.com dosn't exist",
    "failed_type": "SmtpNxBox",
    "esp": "*mail.com",
    "ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
    "is_dedicated_ip": true,
    "tag": "xxxxx"
  },
  "id": "8734hhidu983hi457",
  "source": "acs:dm",
  "specversion": "1.0",
  "subject": "acs:dm:cn-hangzhou:{AccountId}:*",
  "time": "2024-04-29T11:07:12+08:00",
  "type": "dm:Deliver:Fail",
  "aliyunaccountid": "123456789098****",
  "aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
  "aliyuneventbusname": "default",
  "aliyunregionid": "cn-hangzhou",
  "aliyunpublishaddr": "172.25.XX.XX"
}

A tabela a seguir descreve os parâmetros no campo data.

Parâmetro

Tipo

Exemplo

Descrição

header

Object

Cabeçalhos relacionados ao e-mail.

X-Notify-Message-ID

String

test****@example.com

Cabeçalho personalizado X-Notify-Message-ID.

env_id

String

60000****

ID do e-mail retornado pelo sistema no momento do envio.

account

String

batch****@top

Endereço de e-mail do remetente.

from

String

batch****@top

Endereço de e-mail do remetente.

rcpt

String

a****@aliyun.com

Endereço de e-mail do destinatário.

msg_id

String

1df****@example.com

Campo Message-ID do e-mail.

channel_name

String

bg:vip_*

Nome do canal ao qual pertence o IP de saída desta entrega.

outbound_ip

String

8...7

Endereço IP de saída utilizado nesta entrega.

send_time

String

2024-04-29T11:07:04

Horário em que o e-mail foi aceito.

deliver_time

String

2024-04-29T11:07:12

Horário em que a entrega do e-mail foi concluída.

status

String

2

Status da entrega.

  • 0: Sucesso.

  • 2: Endereço inválido.

  • 3: O destinatário marcou o e-mail como spam.

  • 4: Outras falhas.

event

String

dm:Deliver:Fail

Tipo da mensagem de evento. Corresponde ao parâmetro type.

region

String

cn-hangzhou

Região onde o evento ocorreu.

err_code

String

554

Código retornado pelo provedor de serviços de e-mail (ESP) do destinatário após a conclusão da entrega.

err_msg

String

554 RCPT a****@aliyun.com dosn't exist

Mensagem retornada pelo ESP do destinatário após a conclusão da entrega.

failed_type

String

SmtpNxBox

Categorização do resultado da entrega.

esp

String

*mail.com

Categorização do provedor de e-mail do destinatário.

ip_pool_id

String

10306c37-**-**-a82f-1dafb56a9dd2

ID do pool de IPs usado para enviar o e-mail.

is_dedicated_ip

Boolean

true

Indica se foi utilizado um endereço IP dedicado.

tag

String

xxxxx

Tag utilizada para enviar o e-mail.

Entrega de e-mail bem-sucedida

Quando um e-mail é entregue com sucesso, o EventBridge recebe um evento semelhante ao exemplo a seguir.

{
  "data": {
    "header": {
      "X-Notify-Message-ID": "test******@******"
    },
    "env_id": "60000******",
    "account": "batch******@top",
    "from": "batch******@top",
    "rcpt": "xxx******@aliyun.com",
    "msg_id": "1df******@******",
    "channel_name": "bg:vip_*",
    "outbound_ip": "8.*.*.7",
    "send_time": "2024-04-29T11:07:04",
    "deliver_time": "2024-04-29T11:07:12",
    "status": "0",
    "event": "dm:Deliver:Succeed",
    "region": "cn-hangzhou",
    "err_code": "250",
    "err_msg": "250 Send Mail OK",
    "failed_type": "SendOk",
    "esp": "*mail.com",
    "ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
    "is_dedicated_ip": true,
    "tag": "xxxxx"
  },
  "id": "8734hhidu983hi457",
  "source": "acs:dm",
  "specversion": "1.0",
  "subject": "acs:dm:cn-hangzhou:{AccountId}:*",
  "time": "2024-04-29T11:07:12+08:00",
  "type": "dm:Deliver:Succeed",
  "aliyunaccountid": "123456789098****",
  "aliyunpublishtime": "2024-04-29T11:07:13.179PRC",
  "aliyuneventbusname": "default",
  "aliyunregionid": "cn-hangzhou",
  "aliyunpublishaddr": "172.25.XX.XX"
}

Para obter uma descrição dos parâmetros no campo data, consulte Descrições dos parâmetros.

Dados de relatório FBL de e-mail

Quando um e-mail é reportado por meio de um loop de feedback (FBL), o EventBridge recebe um evento como o seguinte:

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Feedback:FblReport",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "send_time": "1726821644",
        "send_email": "from@xxx.com",
        "block_email": "to@yyy.com",
        "subject": "Hello Mr.xxx",
        "message_id": "<msgid***@xxx.com>",
        "block_time": "1726821667",
        "fbl_isp": "outlook**",
        "fingerprint": "SMTPD_abc****"
    }
}

Parâmetros no campo data:

Parâmetro

Tipo

Exemplo

Descrição

send_time

String

1726821644

Horário em que o e-mail foi enviado.

send_email

String

from@xxx.com

Endereço de e-mail do remetente.

block_email

String

to@yyy.com

Endereço de e-mail do destinatário bloqueado.

subject

String

Hello Mr.xxx

Assunto do e-mail.

message_id

String

<msgid***@xxx.com>

Identificador único do e-mail.

block_time

String

1726821667

Horário em que o e-mail foi bloqueado.

fbl_isp

String

outlook**

Provedor de Serviços de Internet (ISP) do remetente.

fingerprint

String

SMTPD_abc****

Impressão digital do e-mail.

Dados de nova inscrição de e-mail

Quando um destinatário se inscreve novamente, o EventBridge recebe um evento como o seguinte:

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Feedback:Subscribe",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "operate_time": "2024-04-29T11:25:48",
        "envid": "6000*********",
        "from": "from@xxx.com",
        "rcpt": "to@yyy.com",
        "client_ip": "102.**.**.1"
    }
}

Parâmetros no campo data:

Parâmetro

Tipo

Exemplo

Descrição

operate_time

String

2024-04-29T11:25:48

Horário em que a operação ocorreu. O horário está em UTC.

env_id

String

6000*****

ID do e-mail retornado pelo sistema no momento do envio.

from

String

from@xxx.com

Endereço do remetente.

rcpt

String

to@yyy.com

Endereço do destinatário.

client_ip

String

102...1

Endereço IP do cliente para o evento de abertura

Dados de cancelamento de inscrição de e-mail

Quando um destinatário cancela a inscrição, o EventBridge recebe um evento como o seguinte:

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Feedback:UnSubscribe",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "operate_time": "2024-04-29T11:25:48",
        "envid": "6000*********",
        "from": "from@xxx.com",
        "rcpt": "to@yyy.com",
        "client_ip": "102.**.**.1"
    }
}

Parâmetros no campo data:

Parâmetro

Tipo

Exemplo

Descrição

operate_time

String

2024-04-29T11:25:48

Horário em que a operação ocorreu. O horário está em UTC.

env_id

String

6000*****

ID do e-mail retornado pelo sistema no momento do envio.

from

String

from@xxx.com

Endereço do remetente.

rcpt

String

to@yyy.com

Endereço do destinatário.

client_ip

String

102...1

Endereço IP do cliente de origem para o evento

Evento de clique

Quando um destinatário clica em um link no e-mail, o EventBridge recebe um evento semelhante ao exemplo a seguir.

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Trace:Click",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "operate_time": "2024-04-29T11:25:48",
        "client_ip": "202.**.**.1",
        "env_id": "60000******",
        "from": "batch******@top",
        "rcpt": "xxx******@aliyun.com",
        "msg_id": "1df******@******",
        "event": "dm:Trace:Click",
        "region": "cn-hangzhou",
        "url": "https://www.aliyun.com",
        "outbound_ip": "102.**.**.1",
        "esp": "*mail.com",
        "ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
        "is_dedicated_ip": true,
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
        "tag": "xxxxx"
    }
}

A tabela a seguir descreve os parâmetros no campo data.

Parâmetro

Tipo

Exemplo

Descrição

operate_time

String

2024-04-29T11:25:48

Horário em que a operação ocorreu.

client_ip

String

202...1

Endereço IP do cliente que clicou no link.

env_id

String

60000

ID do e-mail retornado pelo sistema no momento do envio.

from

String

batch****@top

Endereço do remetente.

rcpt

String

xxx@aliyun.com

Endereço do destinatário.

msg_id

String

1df@

Campo Message-ID no e-mail.

event

String

dm:Trace:Click

Tipo do evento.

region

String

cn-hangzhou

Região onde o evento ocorreu.

url

String

https://www.aliyun.com

URL que recebeu o clique.

outbound_ip

String

102...1

Endereço IP de saída usado para enviar o e-mail.

esp

String

*mail.com

Categorização do provedor de e-mail do destinatário.

ip_pool_id

String

10306c37-**-**-a82f-1dafb56a9dd2

ID do pool de IPs usado para enviar o e-mail.

is_dedicated_ip

Boolean

true

Indica se foi utilizado um endereço IP dedicado.

user_agent

String

Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1

Agente de usuário para o evento de clique.

tag

String

xxxxx

Tag utilizada para enviar o e-mail.

Evento de abertura

Quando ocorre um evento, o EventBridge recebe o seguinte evento de exemplo.

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Trace:Open",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "operate_time": "2024-04-29T11:25:48",
        "client_ip": "202.**.**.1",
        "env_id": "60000******",
        "from": "batch******@top",
        "rcpt": "xxx******@aliyun.com",
        "msg_id": "1df******@******",
        "event": "dm:Trace:Open",
        "region": "cn-hangzhou",
        "outbound_ip": "102.**.**.1",
        "esp": "*mail.com",
        "ip_pool_id": "10306c37-****-****-a82f-1dafb56a9dd2",
        "is_dedicated_ip": true,
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1",
        "tag": "xxxxx"
    }
}

A tabela a seguir descreve os parâmetros no campo data.

Parâmetro

Tipo

Exemplo

Descrição

operate_time

String

2024-04-29T11:25:48

Horário em que a operação ocorreu.

client_ip

String

192.168.XX.XX

Endereço IP do cliente que abriu o e-mail.

env_id

String

60000

ID do e-mail retornado pelo sistema no momento do envio.

from

String

batch****@top

Endereço do remetente.

rcpt

String

a****@aliyun.com

Endereço do destinatário.

msg_id

String

1df****@example.com

Campo Message-ID no e-mail.

event

String

dm:Trace:Click

Tipo do evento.

region

String

cn-hangzhou

Região onde o evento ocorreu.

outbound_ip

String

102...1

Endereço IP de saída usado para enviar o e-mail.

esp

String

*mail.com

Categorização do provedor de e-mail do destinatário.

ip_pool_id

String

10306c37-**-**-a82f-1dafb56a9dd2

ID do pool de IPs usado para enviar o e-mail.

is_dedicated_ip

Boolean

true

Indica se foi utilizado um endereço IP dedicado.

user_agent

String

Mozilla/5.0 (Macintosh; Intel Mac OS X ****) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1

Agente de usuário para o evento de abertura.

tag

String

xxxxx

Tag utilizada para enviar o e-mail.

Resultado assíncrono da validação de endereço em lista cinza

Quando um resultado assíncrono de validação de endereço em lista cinza está disponível, o EventBridge recebe um evento como o seguinte:

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.dm",
    "specversion": "1.0",
    "subject": "acs.dm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "dm:Validator:GrayListResult",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42Z",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "request_id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
        "submission_time": "1763541726",
        "completion_time": "1763541793",
        "email": "xxxxxx@yyy.com",
        "status": "INVALID",
        "sub_status": "MAILBOX_NOT_EXISTS",
        "provider": "XXXX",
        "is_free_mail": false,
        "local_part": "xxxxxx",
        "domain_part": "yyy.com"
    }
}

Parâmetros no campo data:

Parâmetro

Tipo

Exemplo

Descrição

request_id

String

45ef4dewdwe1-7c35-447a-bd93-fab****

ID da solicitação retornado pela API quando a requisição foi enviada.

submission_time

String

1763541726

Horário em que a solicitação de validação foi enviada. O horário está em UTC.

completion_time

String

1763541793

Horário em que a validação foi concluída. O horário está em UTC.

email

String

xxxxxx@yyy.com

Endereço de e-mail que foi validado.

status

String

INVALID

Status do endereço de e-mail após a validação.

sub_status

String

MAILBOX_NOT_EXISTS

Substatus que fornece detalhes adicionais sobre o resultado da validação.

provider

String

XXXX

Categorização do provedor de e-mail para o endereço.

is_free_mail

Boolean

false

Indica se o endereço pertence a um provedor de e-mail gratuito.

local_part

String

xxxxxx

Parte local do endereço de e-mail, convertida para minúsculas e com a tag de sub-endereçamento removida.

domain_part

String

yyy.com

Parte do domínio do endereço de e-mail, convertida para minúsculas.

Evento de push de e-mail

Nota

Todos os campos de horário nos detalhes do evento estão em UTC.

  1. Envie um e-mail de test@hangzhou.dmtest.top para verificar o remetente.

image.png

  1. Verifique a fila do Message Service (MNS) em busca da mensagem. (Este exemplo usa o Message Service (MNS) como destino do evento. Configure um destino diferente, se necessário.)

image.png

  1. Envie um e-mail de um endereço de remetente diferente e verifique o EventBridge > event trace. O evento aparece no rastro, mas não é entregue ao Message Queue for Apache RocketMQ, confirmando que as notificações são acionadas apenas pelo endereço de remetente especificado.image.png

image.png

image.png