异步获取邮件推送结果

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

可以解决的问题:

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

示意图:

(一)事件通知规则组成

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

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

(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)进入事件通知页

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

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

(2)查看事件通知规则

(2.1)事件通知规则列表

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

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

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

(3.1.1)创建队列

(3.1.1.1)进入队列标签页

(3.1.1.2)创建队列

(3.1.2)创建主题

(3.1.2.1)进入主题标签页

(3.1.2.2)创建主题

(3.1.3)创建订阅

(3.1.3.1)进入主题标签页

(3.1.3.2)进入订阅标签页

(3.1.3.3)创建订阅

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

(3.2.1)进入队列标签页

(3.2.2)创建队列

(3.3)从队列中接收消息

(3.3.1)进入队列标签页

(3.3.2)接收消息

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

  • JavaSdk:here
  • C++Sdk:here
  • PythonSdk:here
  • PhpSdk:here
  • C#Sdk:here
  • RestfulAPI:here
时间: 2024-10-31 01:41:41

异步获取邮件推送结果的相关文章

使用阿里云邮件推送服务架设自己邮件验证与推送体系

提示:阅读本文需提前了解的相关知识 1.电子邮件协议(http://baike.baidu.com/view/2367542.htm) 2.阿里云邮件推送(https://www.aliyun.com/product/directmail) 3.EDM(电子邮件营销)(http://baike.baidu.com/subview/1212416/8602812.htm) 4.SendCloud邮件服务(http://sendcloud.sohu.com/) 阅读目录结构 引: 一.需求分析 二.

阿里云『邮件推送』的坑

[TOC] 原谅我标题党的行为,其实阿里云的邮件推送用起来还不错,不过还是踩到一些坑,应该还有些坑没踩到吧,不过很快会验证,希望他们可以尽快改善,整体来说用起来还比较方便(顺便吐槽下技术支持的工单,那个效率真是不敢恭维). 废话少说,直接进入正题吧... 场景介绍 EDM推送 用户注册/找回密码 其他通知 配置步骤 新建发信域名 控制台 -> 邮件推送 -> 邮件设置 -> 发信域名 不建议使用企业邮箱域名,避免企业邮箱收信异常,建议使用二级域名,如: mail.teachmyself.

Win8.1快速获取Win10推送的方法

  Win8.1快速获取Win10推送的方法: 1.删除"C:WindowsSoftwareDistributionDownload"下所有文件 2.按Win+R组合键打开"运行" 3.输入 wuauclt.exe /updatenow 后回车(注意,命令中exe和"/"之间有一个空格) 4.Windows更新程序开启Win10下载

ios-使用AsycSocket怎样获取服务器推送消息

问题描述 使用AsycSocket怎样获取服务器推送消息 公司要实现一个消息推送,我这边使用AsycSocket 连接之后只有自己发送一个请求才能收到推送消息请问如何能直接收到推送消息? 解决方案 是不是对方有要求,要应答式的,收到你的才能发给你 解决方案二: 不是,因为是为了实现三端统一数据,PC或者安卓那边有一端有一个数据提交的服务器,如果提交成功的话就会给别的客户端(登录的用户)发送这个新的消息, 解决方案三: 不是,因为是为了实现三端统一数据,PC或者安卓那边有一端有一个数据提交的服务器

一分钟了解阿里云产品:阿里云邮件推送服务之体验

试用阿里云邮件推送服务   最近有一个程序的邮件通知功能出问题了.自己搭建邮件服务器虽然不难,但是可靠性很难保证,邮件发送功能的服务化是趋势,看到阿里云正在公测邮件推送服务,正好借遇到邮件发送问题的机会试用一下,看能否解决我们的实际问题.     首先在阿里云邮件推送控制台添加域名,然后在自己的dns服务器中添加如下的解析(根据控制台中的"配置"):   一个主机名为aliyundm的TXT记录,用于验证域名所有权. 一个主机名为空.值为v=spf1 include:spf1.dm.a

基于Python的阿里云API签名算法及邮件推送服务

基于Python的阿里云API签名算法及邮件推送服务

一分钟了解阿里云产品:邮件推送概述

在阿里云众多的产品中,邮件推送(Direct Mail)是一款简单高效的电子邮件发送服务.那么,邮件推送具体是指什么呢?让我们一起来了解下吧.     邮件推送构建在可靠稳定的阿里云基础之上,帮助您快速.精准地实现事务邮件.通知邮件和批量邮件的发送.历经两年双11的考验检测,邮件推送在发送速度.系统稳定性和到达率上表现优异.此外,邮件推送提供丰富的接口和灵活的使用方式,为企业和开发者解决邮件投递的难题,用户无需自建邮件服务器,开通服务即可享受阿里云优质的邮件服务,获得邮件投递的最佳实践.   邮

一分钟了解阿里云产品:邮件推送五大热点技术问题分析

在上一篇文章中,我们为大家介绍邮件推送的概况,邮件推送构建在可靠稳定的阿里云基础之上,帮助您快速.精准地实现事务邮件.通知邮件和批量邮件的发送,那在使用过程中,经常遇到的热门技术问题有哪些呢?     设置发信域名:   https://help.aliyun.com/document_detail/directmail/user-guide/mail-set/mail-set-domain.html?spm=5176.docdirectmail/product-introduction/res

邮件推送公司Bluecore宣布完成A轮融资

1月27日消息,如果你登陆过亚马逊的网站,并在网站上浏览过一些商品,大概几天后你就会收到一封相关产品的推荐邮件:我曾经在亚马逊上买过一次漫画书,随后他每过一个阶段都会孜孜不倦的给我推送漫画书推荐书单,尽管我并不是一个二次元死宅. 这种邮件其实叫触发式邮件,已经被广泛应用IT于网站建设里,包括注册欢迎邮件.找回 / 修改密码验证.精选周刊订阅.购物订单确认邮件等等都是具体的应用例子.现在,有一家公司正打算从触发式邮件入手,为零售电商提供商品推送邮件的解决方案.   邮件推送公司Bluecore获6