发表于: 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();
}
}
}
遇到的问题:
暂无
收获:
了解了如何通过第三方发邮件
明天计划事情:
将邮件服务加入到项目中
评论