发表于: 2018-09-17 22:05:19

1 437


今天完成的事情:

1、在阿里注册了域名,并且解析到腾讯云服务器上了,以后不用输入IP地址了


2、调用第三方接口发送邮件

(1)sendcloud

sendcloud明天有50封免费邮件,但必须是自己有域名的情况下。发送邮件可以选择是否使用模板,sendcloud的邮件模板是不需要审核的创建了就能用,而阿里云的需要审核。sendcloude的模板可以设置变量,在发送邮件时添加内容填充变量。下面的代码必须在sendcloud下载的sdk的解压包项目中使用,想要添加jar包独立使用的话代码另写,写起来有些麻烦。


package com.sendcloud.sdk;

import com.sendcloud.sdk.builder.SendCloudBuilder;

import com.sendcloud.sdk.core.SendCloud;

import com.sendcloud.sdk.model.MailAddressReceiver;

import com.sendcloud.sdk.model.MailBody;

import com.sendcloud.sdk.model.SendCloudMail;

import com.sendcloud.sdk.model.TemplateContent;

import com.sendcloud.sdk.util.ResponseData;

import java.lang.reflect.Array;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

 * @Belong: 邮件

 * @Description: sendcloud邮件服务简单测试

 * @Author: jk-leo

 * @Date: 2018/9/17 17:27

 *

 *       只能依附解压出来的文件使用

 *

 */

public class SCEmailHello {

public static void main(String[] args){

sendCloudEmailHello();

}

public static void sendCloudEmailHello(){

MailAddressReceiver receiver = new MailAddressReceiver();

// 添加收件人

receiver.addTo("xxxx");

MailBody body = new MailBody();

// 设置 From

body.setFrom("xxxxx");

body.setFromName("xxxx");

body.setReplyTo("xxxxx@qq.com");

body.setSubject("hello,superleo");

// 填充模板中的数据

List<String> toList = new ArrayList<String>();

toList.add("xxxx");

List<String> nameList = new ArrayList<String>();

nameList.add("joe");

List<String> urlList = new ArrayList<String>();

urlList.add("xxx.xxx.xxx");

Map<String,List<String>> sub = new HashMap<String,List<String>>();

sub.put("%name%",nameList);

sub.put("%url%",urlList);

body.addXsmtpapi("to",toList);

body.addXsmtpapi("sub",sub);

// 创建模板邮件内容

TemplateContent content = new TemplateContent();

content.setTemplateInvokeName("myEmailTemplate");

// 创建邮件

SendCloudMail sendCloudMail = new SendCloudMail();

sendCloudMail.setBody(body);

sendCloudMail.setContent(content);

sendCloudMail.setTo(receiver);

// 发信

System.out.println("发送邮件");

SendCloud sendCloud = SendCloudBuilder.build();

ResponseData result = null;

try {

result = sendCloud.sendMail(sendCloudMail);

} catch (Throwable throwable) {

throwable.printStackTrace();

System.out.println("邮件发送失败:"+result);

}

// 打印返回信息

System.out.println(result.getResult());

System.out.println(result.getStatusCode());

System.out.println(result.getMessage());

System.out.println(result.getInfo());

}

}


(2)阿里云邮件服务

阿里的比sendcloud简单多了,有两个接口可以使用,一个简单的,一个批量可使用模板的。与sendcloud相比,阿里的返回信息包含的很少。

/**
* @Belong: 邮件
* @Description: 阿里云邮件简单例子
* @Author: jk-leo
* @Date: 2018/9/17 20:43
*/
public class AliEmailHello {
 
  public static void main(String[] args){
     test();
//    testTemplate();
  }
 
  public static void test(){
     
     IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","xx","xx");
     
     IAcsClient client = new DefaultAcsClient(profile);
     SingleSendMailRequest request = new SingleSendMailRequest();
     
     // 操作接口名,必选
     request.setActionName("SingleSendMail");
     // 发信地址,必选
     request.setAccountName("xx");
     // 发信人昵称,可选
     request.setFromAlias("xx");
     // 1为发信地址,0为随机账号,必选
     request.setAddressType(1);
     // 确认回信地址验证通过,必须
     request.setReplyToAddress(true);
     // 目标地址,可以多个,逗号分隔,必选
     request.setToAddress("xx");
     // 邮件主题,可选
     request.setSubject("hello, ali email");
     // 邮件HTML正文,限制28K,可选
     request.setHtmlBody("<h2>www.baidu.com</h2>");
     // 邮件text正文,限制28K,可选
     // request.setTextBody("xxx");
     
     try {
        SingleSendMailResponse httpResponse = client.getAcsResponse(request);
        System.out.println("EnvId:"+httpResponse.getEnvId()+"  RequestId:"+httpResponse.getRequestId());
     } catch (ClientException e) {
        e.printStackTrace();
        System.out.println("邮件发送失败");
     }
  }
 
  public static void testTemplate(){
     
     // 使用模板的话批量发送可能用得到,而且模板还要审核,太麻烦了
     
     IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","xx","xx");
     
     IAcsClient client = new DefaultAcsClient(profile);
     BatchSendMailRequest request = new BatchSendMailRequest();
     
     request.setAccountName("xx");
     request.setAddressType(1);
     request.setTagName("angel");
     request.setActionName("BatchSendMail");
     request.setTemplateName("xx");
     request.setReceiversName("Jack");
     
     try {
        BatchSendMailResponse httpResponse = client.getAcsResponse(request);
     } catch (ClientException e) {
        e.printStackTrace();
     }
  }
}


遇到的问题:

暂无


收获:

了解了如何通过第三方发邮件


明天计划事情:

将邮件服务加入到项目中


返回列表 返回列表
评论

    分享到