全部产品
云市场

邮件推送

更新时间:2018-12-26 11:23:43

简介

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订阅代码示例

  1. CloudAccount cloudAccount = new CloudAccount(ACCESS_ID, ACCESS_KEY, ENDPOINT);
  2. MNSClient client = cloudAccount.getMNSClient();
  3. CloudTopic topic = null;
  4. try {
  5. // 1. first create the topic
  6. String topicName = "TOPICNAME";
  7. TopicMeta meta = new TopicMeta();
  8. meta.setTopicName(topicName);
  9. topic = client.createTopic(meta);
  10. // 2. generate the mail endpoint
  11. String mailEndpoint = topic.generateMailEndpoint("mymailbox@alibaba-inc.com");
  12. // 3. now subscribe to topic
  13. SubscriptionMeta subMeta = new SubscriptionMeta();
  14. subMeta.setSubscriptionName(SUBNAME);
  15. subMeta.setEndpoint(mailEndpoint);
  16. topic.subscribe(subMeta);
  17. // 4. publish message
  18. RawTopicMessage msg = new RawTopicMessage();
  19. msg.setMessageBody("hello topic");
  20. // 4.1 set the necessary attributes for mail
  21. MessageAttributes messageAttributes = new MessageAttributes();
  22. MailAttributes mailAttributes = new MailAttributes();
  23. mailAttributes.setAccountName("direct_mail_account_name@aliyun-inc.com");
  24. mailAttributes.setSubject("TestMailSubject");
  25. messageAttributes.setMailAttributes(mailAttributes);
  26. // 4.2 publish
  27. TopicMessage msg2 = topic.publishMessage(msg, messageAttributes);
  28. System.out.println(msg2.getMessageId());
  29. System.out.println(msg2.getMessageBodyMD5());
  30. } catch (ServiceException se) {
  31. System.out.println(se.getErrorCode() + se.getRequestId());
  32. System.out.println(se.getMessage());
  33. se.printStackTrace();
  34. } catch (Exception e) {
  35. e.printStackTrace();
  36. }

Http Request Body示例

  1. POST /topics/$TopicName/messages HTTP/1.1
  2. Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
  3. Date: Tue, 08 Dec 2015 06:13:40 GMT
  4. Content-Length:500
  5. Content-Type:text/xml;charset=utf-8
  6. Authorization: MNS 15B4D3461F177624206A:aibzWu1iDEx9LwO56+kHgA3eqmI=
  7. x-mns-version: 2015-06-06
  8. <?xml version="1.0" encoding="UTF-8"?>
  9. <Message xmlns="http://mns.aliyuncs.com/doc/v1">
  10. <MessageBody>hello topic</MessageBody>
  11. <MessageAttributes>
  12. <DirectMail>{"Subject":"TestMailSubject","AccountName":"direct_mail_account_name@aliyun-inc.com","ReplyToAddress":0,"AddressType":0,"IsHtml":0}</DirectMail>
  13. </MessageAttributes>
  14. </Message>