异步获取邮件推送结果

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 邮件推送服务提供了事件通知功能(可在其控制台上打开异步通知功能),支持将邮件推送的结果以消息的方式异步通知给用户。用户可以通过创建事件通知的规则,来指定在邮件推送过程中触发不同的事件时,将邮件推送的结果消息推送到对应的接收端中。

邮件推送服务提供了事件通知功能(可在其控制台上打开异步通知功能),支持将邮件推送的结果以消息的方式异步通知给用户。用户可以通过创建事件通知的规则,来指定在邮件推送过程中触发不同的事件时,将邮件推送的结果消息推送到对应的接收端中。

可以解决的问题:

  • 异步获取邮件推送的结果,再根据业务需求进行相应的处理,比如重新发送等等
  • 对于大批量的邮件通知的场景,可异步统计推送情况
  • 可以自动处理结果消息,对推送情况进行监控,比如发生突发的大量邮件推送失败,可以第一时间知晓
  • 结果消息可以通过多种方式推送到不同的接收端(可能有多个业务部门均关心该数据),以进行不同的统计处理
  • 如果A将推送的权限授予B,A可以通过该方式来知晓B推送短信的情况

示意图:

dm-en-archi

(一)事件通知规则组成

事件通知规则由两部分组成:

  • 事件类型
  • 消息接收终端

(1)事件类型

事件通知是按区域提供服务的,在创建规则时,关注某个(些)事件就是指关心这个区域的邮件推送过程中产生的所有该类型事件。邮件推送的事件有如下两种:

事件类型 描述
Deliver:SendSuccessfully 邮件推送成功
Deliver:SendFailed 邮件推送失败

(2)消息接收终端
创建规则时,消息的接收终端可以有两种设置方式:

  • 指定接收消息的Http服务或者MNS的队列:此时系统会自动帮忙创建一个主题,并且以指定的Http服务或者MNS队列作为Endpoint,创建相应的订阅。(如果事先没有主题,建议使用这种方式)
  • 直接指定主题:此时,规则匹配的话,消息就会发布到主题中(此时用户可以选择已有的主题,或者先创建主题,再选择某个主题。如果用户指定了不存在的主题,消息是没办法正常推送的)。然后用户可以在该主题上创建订阅,指定通过何种方式将消息推送到指定的接收端。注:

    • 不要选择短信专用的主题(sms.xxx)作为消息接收端,短信专用Topic仅支持短信推送。
    • 如果直接指定主题,只能指定一个。

注:

事件通知规则指定消息接收端时,需要注意的是,选择“主题”,与选择其他的接收终端是互斥的。即,如果选择了“主题”,那只能继续选择“主题”;如果选择了“非主题”的终端,那只能选择“非主题”的终端。

补充:

  • 消息通知是基于MNS的主题实现的,支持多种推送方式,具体可参考:here
  • 接收消息的Http服务搭建可参考:说明SDK示例
  • 从对应的队列中获取通知消息的方式可参考:here

(二)邮件推送异步通知消息

邮件推送的结果消息格式如下(包含如下字段):

字段名 描述
env_id 系统内ID(用于反馈查询问题)
msg_id 邮件原文中的Message-ID字段
account 发件人地址
from 发件人地址
rcpt 收件人地址
recv_time 邮件接收入队时间
end_time 邮件投递完成时间
status 投递完成结果状态(0-成功,2-无效地址,3-接收方认为垃圾邮件,4-失败)
event 触发的事件
region 时间规则所在区域
err_code 投递完成时接收方ESP返回码
err_msg 投递完成时接收方ESP返回信息

发送成功和发送失败时,消息中的字段都是一样的,格式如下:

env_id=$env_id&msg_id=$msg_id&account=$account&from=$from&rcpt=$rcpt&recv_time=$time&end_time=$time&status=$status&event=$event&region=$region&err_code=$err_code&err_msg=$err_msg

消息示例分别如下所示:

(1)发送成功:

env_id=457323378&msg_id=77041400535408&account=test@test.com&from=test@test.com&rcpt=abc@abc.com&recv_time=2017-04-14 11:44:47&end_time=2017-04-14 11:44:48&status=0&event=deliver&region=cn-hangzhou&err_code=250&err_msg=250 Send Mail OK

(2)发送失败

env_id=457323379&msg_id=77041400535409&account=test@test.com&from=test@test.com&rcpt=abc@abc.com&recv_time=2017-04-14 11:44:48&end_time=2017-04-14 11:44:49&status=2&event=deliver&region=cn-hangzhou&err_code=550&err_msg=550 No Such User

(三)注意事项:

  • 事件通知规则创建完,约10分钟左右生效
  • 事件通知规则创建时,选择“主题”,与选择其他的接收终端是互斥的。即,如果选择了“主题”,那只能继续选择“主题”;如果选择了“非主题”的终端,那只能选择非主题的终端。
  • 事件通知规则创建时,选择“主题”作为终端时,只能选择一个。
  • 事件通知规则创建时,选择“主题”作为终端时,不能选择短信专用的主题(sms.xxx)。
  • 事件通知规则创建时,如果选择“主题”作为接收终端时,用户需要自己去创建对应的订阅,定义自己的推送(消费)方式。
  • 事件通知规则创建时,如果选择“非主题”作为接收终端时,会自动创建主题和对应的订阅。
  • 事件通知规则支持创建和删除,暂时不支持修改

(四)操作方式

(1)创建事件通知规则

(1.1)进入事件通知页

create-1

(1.2)选择主题作为接收终端

create-2

(1.3)选择“非主题”作为接收终端

create-3

(2)查看事件通知规则

(2.1)事件通知规则列表

list-1

(3)接收异步通知消息(队列)

推送邮件后,可以根据对应事件规则中的描述,在指定的消息接收终端查看到结果消息。比如创建规则时,指定将消息发送到队列中,那就可以在控制台中,直接到对应的队列中查询消息内容;如果是指定发送到用户的HTTP服务器上,用户的HTTP服务器会收到具体的推送消息(可参考:说明SDK示例)。

(3.1)如果创建规则时,选择的是主题,需要自行去创建订阅以及队列(已经有对应的订阅和队列的话,则跳过这两步)

(3.1.1)创建队列

(3.1.1.1)进入队列标签页

create-queue-1

(3.1.1.2)创建队列

create-queue-2

(3.1.2)创建主题

(3.1.2.1)进入主题标签页

create-topic-1

(3.1.2.2)创建主题

create-topic-2

(3.1.3)创建订阅

(3.1.3.1)进入主题标签页

create-sub-1

(3.1.3.2)进入订阅标签页

create-sub-2

(3.1.3.3)创建订阅

create-sub-3

(3.2)如果创建规则时,选择的是队列,则只需要自行创建队列即可(已有对应的队列,则跳过该步骤)

(3.2.1)进入队列标签页

create-queue-1

(3.2.2)创建队列

create-queue-2

(3.3)从队列中接收消息

(3.3.1)进入队列标签页

receive-1

(3.3.2)接收消息

receive-2

补充说明:使用SDK从对应Queue中接收异步回调结果消息的示例代码可参考:

相关文章
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
9月前
|
监控 搜索推荐 定位技术
阿里云推送移动推送
阿里云推送是阿里巴巴集团旗下的一款云端消息推送服务。作为云计算领域的领军企业之一,阿里云通过推送技术为开发者和企业提供了高效、可靠的消息传递服务,帮助他们快速将消息推送给设备或用户,实现实时通知和消息交互。
|
消息中间件 存储 RocketMQ
消息达到后实时推送机制|学习笔记
快速学习消息达到后实时推送机制
81 0
消息达到后实时推送机制|学习笔记
|
Java 开发者
实现发送模板邮件|学习笔记
快速学习实现发送模板邮件
121 0
实现发送模板邮件|学习笔记
|
机器学习/深度学习 移动开发 NoSQL
Day 11: AeroGear 推送服务器:使应用的通知推送变得简单
在今天的“30天学习30种新技术”, 我打算去扩展一下昨天开发的 PhoneGap 应用,加上推送通知的功能。推送通知允许应用去通知或者警告用户,即使是在程序没有打开的情况下。例如,如果我们有一个允许通知推送的 Twitter 应用,当 Twitter 上有人提到你或者关注你了,Twitter 应用也会推送一个通知给你,即使这个应用没有在运行。
178 0
Day 11: AeroGear 推送服务器:使应用的通知推送变得简单
|
自然语言处理 网络协议 Java
认识长轮询:配置中心是如何实现推送的?
目前比较流行的两款配置中心分别是:Nacos 和 Apollo ,而它们恰恰都没有使用长连接,而是使用的长轮询。本文将介绍长轮询这种听起来好像已经是上个世纪的技术,老戏新唱,看看能不能品出别样的韵味。
认识长轮询:配置中心是如何实现推送的?
微信公众号发送提醒消息
公众号端配置 1.模板消息需要提前申请,入口在添加功能插件中,通过审批之后在功能-模板消息。需要注意的是行业决定了模板可以选择的范围,行业可以改但是需要时间。 2.进入微信公众平台在设置菜单中找到公众号设置,进入后设置网页授权对应的域名 获取公众号openid过程 注意:*.2,3步为网页之间的跳转,需要先走微信认证服务器由微信服务器返回至网页,且不能携带参数,网页端通过参数中有没有code来判断是否完成了认证请求。
1904 0
|
SQL 消息中间件 对象存储
太方便了!DLA消息回执,及时通知您的异步Query
一、DLA介绍 数据湖(Data Lake)是时下热门的概念,更多阅读可以参考:https://en.wikipedia.org/wiki/Data_lake。基于数据湖,可以不用做任何ETL、数据搬迁等过程,实现跨各种异构数据源进行大数据关联分析,从而极大的节省成本和提升用户体验。
2229 0
|
Android开发 开发工具
极光推送(二)接收通知
步骤(分为两步) 一.设置通知栏样式(如果不设置则默认使用自带的),这里官方给了三种方式: 1.基础(定制声音、震动、闪灯等 Notification 样式): BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(MainActivity.
1416 0
|
开发工具 Android开发 数据安全/隐私保护