全部产品
云市场
云游戏

设置异步通知

更新时间:2019-11-22 17:23:38

通过邮件推送服务器发送邮件请求后, 投递结果将按照您在消息服务中设置的事件通知规则发送至消息服务的接收终端(HTTP、消息队列、主题)中,您可以使用消息服务的接收终端异步获取投递结果。

设置异步通知,首先需要在消息服务控制台创建事件通知规则,然后再到邮件推送控制台新建异步通知,所以需要开通消息服务。消息服务可能会产生费用。

设置异步通知时使用阿里云主账号,消息服务目前不支持子账号

创建事件通知规则

建议在创建事件通知规则之前,先创建消息接收队列作为事件通知接收终端。

创建消息接收的队列

  1. 进入 消息服务控制台
  2. 单击左侧导航栏中 队列,进入队列页面。
  3. 单击页面右上角 创建队列,将会弹出新建队列对话框。
  4. 依次输入队列名称,选择地域(建议用户选择距离您较近区域),其他按默认值即可,然后单击 确认

新建队列

创建事件通知规则

  1. 在消息服务控制台,单击左侧导航栏中 事件通知
  2. 选择地域和产品名称。
  3. 单击页面右上角 创建规则,将弹出规则创建对话框。
  4. 检查地区、产品名称,输入规则名称,选择事件类型,添加接收终端,然后单击确定
    接收终端目前支持 HTTP、队列、主题三种。您可以选择创建的队列为接收终端。

选择产品名称

创建规则

注意:新规则创建完成后,需要约 10 分钟的时间才能生效。支持的消息通知区域如下:华东2、华东1、华北1、华东2、华南1、新加坡。

事件类型“说明见下文。

新建异步通知

异步通知分为账户级异步通知和发信地址级异步通知。
如果您希望对所有发信地址实现投递结果的异步通知,仅设置账户级异步通知即可。
如果您希望仅对某些发信地址实现投递结果的异步通知,仅设置该发信地址的发信地址异步通知即可。
您也可以既设置账户级又设置发信地址级异步通知。因发信地址级异步通知优先级高于账户级异步通知,即发信地址优先获取对应发信地址级异步通知设置,账户级异步通知设置对该发信地址以外的其他发信地址生效。

创建账户级异步通知

  1. 登录 邮件推送管理控制台
  2. 单击左侧导航栏中 异步通知进入异步通知页面。
  3. 单击页面右上角 新建账号级异步通知,将会弹出创建对话框。
  4. 选择与之前选择一致的区域,然后单击 确定

新建账号级异步通知

创建发信地址级异步通知

  1. 登录 邮件推送管理控制台
  2. 单击左侧导航栏中 异步通知进入异步通知页面。
  3. 单击 发信地址级异步通知
  4. 然后单击页面右上角 新建发信地址级异步通知
  5. 在弹出对话框中选择发信地址和地域,然后单击 确定

新建

消息服务控制台接收队列消息,验证链路已通

通过邮件推送服务器发送邮件请求后,

  1. 进入 消息服务控制台
  2. 单击左侧导航栏中 队列
  3. 选择相应区域,查看之前创建的队列中的活跃消息数。
  4. 单击该队列对应的 接收消息 按钮,将弹出推送过来的具体事件通知。

查看

接收

程序如何获取接收消息?

参照消息服务MNS的文档https://help.aliyun.com/document_detail/52587.html?spm=a2c4g.11174283.6.582.15d511e7IJhzWg#title-3rj-mkb-p75

事件类型和启用方式

事件类型目前支持如下几类:

  • 投递成功:Deliver:SendSuccessfully
  • 投递失败:Deliver:SendFailed
  • 打开邮件:Deliver:Open
  • 点击邮件中的链接:Deliver:Click

发送邮件时如何开启投递成功或者失败事件的统计?

不需要额外关心,默认会搜集投递信息。

发送邮件时如何开启打开事件的统计?

  • API或者SDK发信时,ClickTrace设置为”1”。
  • SMTP发信时,参照文档设置头X-AliDM-Trace。

发送邮件时如何开启点击事件的统计?

  • API或者SDK发信时,ClickTrace设置为”1”。
  • SMTP发信暂时不支持。

投递成功和投递失败的消息结构

消息样例

env_id=12769055421&msg_id=37483d95-7a08-41fb-9738-3d3ffa24d415@alibaba.com&account=dmxxx@xxxtest.com&from=dmxxx@xxxtest.com&rcpt=dmyyy@xyztest.com&recv_time=2017-03-29 14:22:40&end_time=2017-03-29 14:22:43&status=0&event=deliver&region=cn-hangzhou&err_code=250&err_msg=250 Send Mail OK&failed_type=SendOk或env_id=12625010655&msg_id=ac349efc-0d79-489b-affa-f178dce3e49e@alibaba.com&account=ere@zzztest.site&from=ere@zzztest.site&rcpt=dmtest@xyztest.com&recv_time=2017-03-28 19:09:49&end_time=2017-03-28 19:09:51&status=4&event=deliver&region=cn-hangzhou&err_code=524&err_msg=524 Host not found by dns resolve [@ou070302]&failed_type=SysOutDnsResolveFail

如何解析?

以”&”分隔key-val对,key-val对用”=”分隔。key的说明见”参数列表”。

如何区分成功还是失败消息?

当 err_code 不是 250 时,表示投递失败事件消息。

当 err_code 是 250 时,表示投递成功事件消息。

参数列表

名称 描述
event 事件消息的类型。deliver对应着投递事件
region 事件发生的区域
env_id 系统内ID,发信时会返回
msg_id 邮件原文 Message-ID 字段
account 发件人地址
from 发件人地址
rcpt 收件人地址
recv_time 邮件接收入队时间
end_time 邮件投递完成时间
status 投递完成结果状态(0-成功,2-无效地址,3-接收方认为垃圾邮件,4-失败)
err_code 投递完成时接收方 ESP 返回码
err_msg 投递完成时接收方 ESP 返回信息
failed_type 投递结果分类

关于常见failed_type的解释:

语义和建议
SendOk 投递成功
SysOutDnsResolveFail 收信账户DNS解析失败,一般是无效域名。从您收信列表剔除
SmtpMfFreq 发信账户被流控。降低您的发信频率
SmtpContSpam 内容被对方判断为垃圾邮件。完善您的发信内容
SmtpAuthFail SPF或者DKIM校验失败。请解析正确的SPF,并且测试下DKIM是否正确
SmtpNxBox 无效地址。从您收信列表剔除
SysOutInvRcpt 无效地址。从您收信列表剔除
SmtpRcptFreq 收信系统疲劳度控制。请暂时停止给当前收信人发信
SmtpRcptFreq 收信系统疲劳度控制。请暂时停止给当前收信人发信
SmtpTempErr 临时错误。请重试。
SmtpZPermErr 永久错误。请不要重试,根据对方返回信息确认具体的错误原因。

打开邮件事件的消息结构

样例

event=Open&region=cn-shanghai&env_id=1787028339695694937&from=vip@vip.dmtest.com&rcpt=825633839@qq.com&operate_time=2019-11-19 19:02:47

参数列表

名称 描述
event 事件消息的类型。Open对应着打开邮件事件
region 事件发生的区域
env_id 系统内ID,发信时会返回
from 发件人地址
rcpt 收件人地址
operate_time 打开邮件时间

点击邮件事件的消息结构

样例

event=Click&region=cn-shanghai&env_id=74382063465&from=vip@vip.caizhaowang.com&rcpt=xujun@vacree.com&operate_time=2019-11-19 19:03:17&url=http://www.bidcenter.com.cn/news-82240467-1.html

参数列表

名称 描述
event 事件消息的类型。Click对应着点击邮件事件
region 事件发生的区域
env_id 系统内ID,发信时会返回
from 发件人地址
rcpt 收件人地址
operate_time 打开邮件时间
url 点击的url