全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息服务

邮件推送

更新时间:2017-06-07 13:26:11

MNS消息服务的Topic目前已经支持邮件推送,用户发送到Topic里面的Message不仅可以被推送到HttpServer和MNS的Queue,现在也可以被同时推送到邮箱。

Endpoint格式

mail:directmail:XXX@YYY.com,其中"XXX@YYY.com"是您的邮箱地址。

前置条件

只需要先开通阿里云的邮件推送服务即可,具体开通方式请参考下面文档。

开通邮件推送服务

  1. 确认已拥有在域名服务商注册过的域名,一般可以使用您公司的域名 点此查询和购买域名 以万网为例:
  2. 进入邮件推送控制台
  3. 在邮件推送控制台配置域名

    点击配置后会看到以下信息,会在第4步用到这些信息:
  4. 将配置信息填写到第一步时确认的域名服务商处,具体填写方法请参考域名解析配置 快捷链接: 万网域名控制台
  5. 在邮件推送控制台配置发信地址

  6. 现在,您已经可以完成配置,可以在邮件推送控制台看到发信地址了。

控制台体验流程

创建邮件订阅
  1. 在MNS控制台创建Topic
  2. 进入Topic的"订阅详情"
  3. 创建订阅
发送消息 (PublishMessage)
  1. 进入Topic列表页面
  2. 向Topic发送消息
  3. 配置邮件消息的相关属性

    邮件推送的相关属性可以参考这里
  4. 发送消息,并查收邮件

JavaSDK订阅代码示例

CloudAccount cloudAccount = new CloudAccount(ACCESS_ID, ACCESS_KEY, ENDPOINT);
MNSClient client = cloudAccount.getMNSClient();

CloudTopic topic = null;
try {
    // 1. first create the topic
    String topicName = "TOPICNAME";
    TopicMeta meta = new TopicMeta();
    meta.setTopicName(topicName);
    topic = client.createTopic(meta);

    // 2. generate the mail endpoint
    String mailEndpoint = topic.generateMailEndpoint("mymailbox@alibaba-inc.com");

    // 3. now subscribe to topic
    SubscriptionMeta subMeta = new SubscriptionMeta();
    subMeta.setSubscriptionName(SUBNAME);
    subMeta.setEndpoint(mailEndpoint);

    topic.subscribe(subMeta);

    // 4. publish message
    RawTopicMessage msg = new RawTopicMessage();
    msg.setMessageBody("hello topic");

    // 4.1 set the necessary attributes for mail
    MessageAttributes messageAttributes = new MessageAttributes();
    MailAttributes mailAttributes = new MailAttributes();
    mailAttributes.setAccountName("direct_mail_account_name@aliyun-inc.com");
    mailAttributes.setSubject("TestMailSubject");
    messageAttributes.setMailAttributes(mailAttributes);

    // 4.2 publish
    TopicMessage msg2 = topic.publishMessage(msg, messageAttributes);
    System.out.println(msg2.getMessageId());
    System.out.println(msg2.getMessageBodyMD5());
} catch (ServiceException se) {
    System.out.println(se.getErrorCode() + se.getRequestId());
    System.out.println(se.getMessage());
    se.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

Http Request Body示例

POST /topics/$TopicName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Tue, 08 Dec 2015 06:13:40 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
Authorization: MNS 15B4D3461F177624206A:aibzWu1iDEx9LwO56+kHgA3eqmI=
x-mns-version: 2015-06-06

<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1">
    <MessageBody>hello topic</MessageBody>
    <MessageAttributes>
        <DirectMail>{"Subject":"TestMailSubject","AccountName":"direct_mail_account_name@aliyun-inc.com","ReplyToAddress":0,"AddressType":0,"IsHtml":0}</DirectMail>
    </MessageAttributes>
</Message>
本文导读目录