文档

设置异步通知

更新时间:

本文介绍如何设置异步通知功能。

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

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

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

创建事件通知规则

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

创建消息接收的队列

  1. 进入消息服务控制台

  2. 单击左侧导航栏中队列,进入队列页面。

  3. 单击页面创建队列按钮,将会弹出新建队列对话框。

  4. 输入队列名称,其他按默认值即可,然后单击确认

image.png

创建事件通知规则

1、在消息服务控制台,单击左侧导航栏中事件通知

2、单击页面创建规则按钮,将弹出规则创建对话框。

3、检查地区,产品名称,输入规则名称,选择事件类型,添加接收终端,然后单击确定。接收终端目前支持 HTTP、队列两种。您可以选择创建的队列为接收终端。

image.png

注意:新规则创建完成后,需要约 10 分钟的时间才能生效。

“[事件类型]”说明见下文。

新建异步通知

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

创建账户级异步通知

1、登录 邮件推送管理控制台

2、单击左侧导航栏中异步通知进入异步通知页面。

3、单击页面新建账号级异步通知按钮,将会弹出创建对话框。

4、选择与之前选择一致的区域,然后单击确定

新建账号级异步通知

创建发信地址级异步通知

1、登录邮件推送管理控制台

2、单击左侧导航栏中异步通知进入异步通知页面。

3、单击发信地址级异步通知

4、然后单击页面新建发信地址级异步通知按钮。

5、在弹出对话框中选择发信地址和地域,然后单击确定

新建

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

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

1、进入消息服务控制台

2、单击左侧导航栏中队列列表

3、选择相应区域,查看之前创建的队列中的活跃消息数。

4、单击该队列对应的收发消息按钮,查看具体消息。

image.png

image.png

程序如何获取接收消息?

参照邮件推送事件通知概述

事件类型和启用方式

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

  • 投递成功:Deliver:SendSuccessfully

  • 投递失败:Deliver:SendFailed

  • 打开邮件:Deliver:Open

  • 点击邮件中的链接:Deliver:Click

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

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

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

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

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

投递成功样例

X-Notify-Message-ID=3121639760461820&env_id=12769055421&msg_id=37483d95-7a08-41fb-9738-3d3ffa24d415@example.com&account=example@example.com&

from=a***@example.net&rcpt=a1***@example.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

投递失败样例

X-Notify-Message-ID=3121639760461824&env_id=12625010655&msg_id=ac349efc-0d79-489b-affa-f178dce3e49e@example.com&account=example@example.com&

from=a***@example.net&rcpt=a1***@example.net&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 时,表示投递成功事件消息。

参数列表

名称

描述

X-Notify-Message-ID

设置的自定义头X-Notify-Message-ID

env_id

系统内ID,发信时会返回

msg_id

邮件原文 Message-ID 字段

account

发件人地址

from

发件人地址

rcpt

收件人地址

recv_time

邮件接收入队时间

end_time

邮件投递完成时间

status

投递完成结果状态(0-成功,2-无效地址,3-接收方认为垃圾邮件,4-失败)

event

事件消息的类型。deliver对应着投递事件

region

事件发生的区域

err_code

投递完成时接收方 ESP 返回码

err_msg

投递完成时接收方 ESP 返回信息

failed_type

投递结果分类

关于常见failed_type的解释:

语义和建议

SendOk

投递成功。

SysOutDnsResolveFail

收信域名DNS解析失败,一般是无效域名。请从收信列表剔除该域名。

SmtpMfFreq

发信账户被流控。请降低您的发信频率。

SmtpContSpam

内容被对方判断为垃圾邮件。完善您的发信内容,或者停止向对应收信域发送此模板的邮件。

SmtpAuthFail

SPF、DKIM或DMARC校验失败。请解析正确的SPF,检查是否有配置DMARC记录,并且测试下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

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

SmtpMfLimit

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

SmtpDmaFail

已配置DMARC的域名,由于SPF或者DKIM校验失败而被拦截。请解析正确的SPF,并且测试下DKIM是否正确。

SmtpProtErr

对端协议交互错误,可向阿里云同学反馈定位排查。

SysOutRecipientReportedSpam

收信人举报了您的发信地址或者域名,请停止向该收信人/收信域发信。

SysOutHoneypot

收信人是蜜罐地址。请停止向此地址发信,否则会受到反垃圾组织的惩罚。

SysOutRecipientUnsubscribed

收信人退订了您发信地址或者域名,请停止向该收信人/收信域发信。

SysIncomingInvRcpt

命中全局无效地址库,如您确认该地址有效,可向阿里云同学反馈,或选择不启用全局级别无效地址库

SysOutRcptOnAccountLevelBounceList

命中账号级别无效地址库,如您确认该地址有效,可在无效地址库页面进行删除,或选择不启用账号级别无效地址库。

SmtpDbl

命中spamhaus域名黑名单,请用户暂停发信,前往check.spamhaus.org申请解除,解除列黑后,请用户注意发信质量,不要向未订阅用户发信。

打开邮件事件的消息结构

样例

event=Open&region=cn-hangzhou&env_id=270016664318&msg_id=1688486074.7.1673022065730@example.com&from=a***@example.net&rcpt=a***@example.net&operate_time=2023-01-07 01:43:51

参数列表

名称

描述

event

事件名称

region

事件发生的区域

env_id

系统内ID,发信时会返回

msgid

邮件原文 Message-ID 字段

from

发件人地址

rcpt

收件人地址

operate_time

事件操作时间

点击邮件事件的消息结构

样例

event=Click&region=cn-hangzhou&env_id=17870283365788973187&msg_id=02785cb2-71b1-4fb5-bdbb-a49dfbe3326f@example.com&from=a***@example.net&

rcpt=a1***@example.net&operate_time=2023-01-12 09:54:09&url=httpsxxx

参数列表

名称

描述

event

事件名称

region

事件发生的区域

env_id

系统内ID,发信时会返回

msgid

邮件原文 Message-ID 字段

from

发件人地址

rcpt

收件人地址

operate_time

事件操作时间

url

点击的URL

其他相关文档

异步通知相关问题

  • 本页导读 (0)
文档反馈