阿里云首页 邮件推送

设置异步通知

通过邮件推送服务器发送邮件请求后, 投递结果将按照您在消息服务中设置的事件通知规则发送至消息服务的接收终端(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

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

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

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

参照开启打开和点击事件文档

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

消息样例

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

收信系统疲劳度控制。请暂时停止给当前收信人发信

SmtpSslTlsErr

临时性错误,由于网络问题或对端不可用,SSL/TLS连接失败,请重试。

SmtpTempErr

临时错误。请重试。

SmtpZPermErr

永久错误。请不要重试,根据对方返回信息确认具体的错误原因。

SysOutSocksConnError

链接错误次数过多,可能原因是对端拒绝链接或者收信域名MX地址不对

SmtpFullBox

收信人邮箱已满,请停止发信给该收信人

SmtpIPFreq

收信系统对IP进来流控,请降低发信速度,稍后重试

SysOutSocksError

链接错误次数过多,可能原因是对端拒绝链接或者收信域名MX地址不对

SysOutConnError

链接错误次数过多,可能原因是对端拒绝链接或者收信域名MX地址不对

SysOutConnTooMuch

链接错误次数过多,可能原因是对端拒绝链接或者收信域名MX地址不对

UnkSmtpError

未知错误

SmtpMfdFreq

发信域名被流控。降低您的发信频率

SmtpMiscSpam

内容被对方判断为垃圾邮件。完善您的发信内容

SmtpMfBad

发信人被收信系统列黑

SmtpSpfFail

SP校验失败。请解析正确的SPF

SmtpMfLimit

发信人全天发送邮件的数量超过收信域限制。请第二天重试

SmtpDmaFail

SPF或者DKIM校验失败。请解析正确的SPF,并且测试下DKIM是否正确

SmtpProtErr

对端协议交互错误

打开邮件事件的消息结构

样例

bid=1&env=175351599260&mac=108503&mf=test@xxxxxxxx.dmxxxx.xxxx&msgid=834133664.11629898518446.JavaMail.javamailuser@localhost&sac=0&tag=testTrace&tid=&to=zhangxxxxxx@xxxxx.xxx&tpl=&ts=1629898524&type=1&url=&v=1.0&sign=1c1af56a87ba2924002aca6652271e66

参数列表

名称

描述

bid

批量id

env

系统内ID,发信时会返回

mac

主账号

mf

发件人地址

msgid

邮件原文 Message-ID 字段

sac

子账号

tag

邮件标签

to

收件人地址

tpl

模版id

type

跟踪类型

url

点击的url

sign

签名

点击邮件事件的消息结构

样例

bid=1&env=175351599260&mac=108503&mf=test@xxxxxxxx.dmxxxx.xxxx&msgid=834133664.11629898518446.JavaMail.javamailuser@localhost&sac=0&tag=testTrace&tid=&to=zhangxxxxxx@xxxxx.xxx&tpl=&ts=1629898524&type=0&url=httpxxx&v=1.0&sign=f4f601cd83d65ad1e48a256e1502d7ad

参数列表

名称

描述

bid

批量id

env

系统内ID,发信时会返回

mac

主账号

mf

发件人地址

msgid

邮件原文 Message-ID 字段

sac

子账号

tag

邮件标签

to

收件人地址

tpl

模版id

type

跟踪类型

url

点击的url

sign

签名