本文介绍如何设置异步通知功能,异步通知仅对此功能的存量用户开放,未使用过异步通知的用户请使用全新功能”事件分发“-设置事件分发。
通过邮件推送服务器发送邮件请求后, 投递结果将按照您在轻量消息队列中设置的事件通知规则发送至轻量消息队列的接收终端(HTTP、消息队列、主题)中,您可以使用轻量消息队列的接收终端异步获取投递结果。
设置异步通知,首先需要在轻量消息队列控制台创建事件通知规则,然后再到邮件推送控制台新建异步通知,所以需要开通轻量消息队列。轻量消息队列可能会产生费用。
设置异步通知时使用阿里云主账号,轻量消息队列目前不支持子账号。
创建事件通知规则
建议在创建事件通知规则之前,先创建消息接收队列作为事件通知接收终端。
创建消息接收的队列
进入轻量消息队列控制台。
单击左侧导航栏中队列,进入队列页面。
单击页面创建队列按钮,将会弹出新建队列对话框。
输入队列名称,其他按默认值即可,然后单击确认。
创建事件通知规则
1、在轻量消息队列控制台,单击左侧导航栏中事件通知。
2、单击页面创建规则按钮,将弹出规则创建对话框。
3、检查地区,产品名称,输入规则名称,选择事件类型,添加接收终端,然后单击确定。接收终端目前支持 HTTP、队列两种。您可以选择创建的队列为接收终端。
注意:新规则创建完成后,需要约 10 分钟的时间才能生效。
“[事件类型]”说明见下文。
新建异步通知
异步通知分为账户级异步通知和发信地址级异步通知。如果您希望对所有发信地址实现投递结果的异步通知,仅设置账户级异步通知即可。如果您希望仅对某些发信地址实现投递结果的异步通知,仅设置该发信地址的发信地址异步通知即可。您也可以既设置账户级又设置发信地址级异步通知。因发信地址级异步通知优先级高于账户级异步通知,即发信地址优先获取对应发信地址级异步通知设置,账户级异步通知设置对该发信地址以外的其他发信地址生效。
创建账户级异步通知
1、登录 邮件推送管理控制台。
2、单击左侧导航栏中异步通知进入异步通知页面。
3、单击页面新建账号级异步通知按钮,将会弹出创建对话框。
4、选择与之前选择一致的区域,然后单击确定。
创建发信地址级异步通知
1、登录邮件推送管理控制台。
2、单击左侧导航栏中异步通知进入异步通知页面。
3、单击发信地址级异步通知。
4、然后单击页面新建发信地址级异步通知按钮。
5、在弹出对话框中选择发信地址和地域,然后单击确定。
轻量消息队列控制台接收队列消息,验证链路已通
通过邮件推送服务器发送邮件请求后,
1、进入轻量消息队列控制台。
2、单击左侧导航栏中队列列表。
3、选择相应区域,查看之前创建的队列中的活跃消息数。
4、单击该队列对应的收发消息按钮,查看具体消息。
程序如何获取接收消息?
参照邮件推送DM
事件类型和启用方式
事件类型目前支持如下几类:
投递成功: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®ion=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®ion=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®ion=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®ion=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 |