本文介绍了如何安装和使用Java SDK。
创建AccessKey
(注:也可以使用阿里云访问控制服务创建的AccessKey。)
单击页面右上角按钮创建 AccessKey,弹出创建对话框。
阅读《API使用规范》后,单击同意并创建。
(推荐)安装 Java SDK
开发环境
阿里云Java SDK支持J2SE Development Kit (JDK) 1.6或以上版本。
SDK 安装
通过 Maven 进行安装
1、添加Maven库
您可以在openAPI页面,“SDK信息”获取新版本号。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dm20151123</artifactId>
<version>1.0.x</version>
</dependency>
2、跳转到openAPI进行调试,选择开发语言,填写参数,下载自动生成的代码(会包含参数值)。
调试页面无须填写Key值。
请勿在代码中硬编码"accessKeyId","accessKeySecret"值,以免泄露。
阿里云SDK支持在操作系统的环境变量中定义ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的值,代码中从环境变量获取后进行鉴权,参考文档:身份验证配置。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
(不推荐)旧版SDK安装方式
SDK 下载
直接下载:https://aliyundm.oss-cn-hangzhou.aliyuncs.com/example/aliyun-java-sdk-dmV3.1.0.zip。
通过以下地址查询下载SDK:https://oss.sonatype.org/#nexus-search;gav~com.aliyun~aliyun-java-sdk-*~~~。
SDK 安装
手动安装
1、在解压的文件中可以找到aliyun-java-sdk-dm-3.1.0.jar 和 aliyun-java-sdk-core-3.0.0.jar包。
2、以Eclipse导入JAR包为例:在Eclipse上右键点击Project,再单击Properties> Java Build Path> Libraries> Add External JARs(netbeans和intellij 等其他 idea 用户请自行按照相应导入 JAR 包的方法导入)。
3、选择以上JAR包,点击OK按钮。
经过以上步骤,您就可以在工程中使用阿里云Java SDK了。
通过Maven进行安装
1、添加Maven库
<repositories>
<repository>
<id>sonatype-nexus-staging</id>
<name>Sonatype Nexus Staging</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
2、添加JAR包
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dm</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
发送邮件示例
调用单一发信 API 示例,如何调用此接口,请参见 SingleSendMail:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dm.model.v20151123.SingleSendMailRequest;
import com.aliyuncs.dm.model.v20151123.SingleSendMailResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class Sample {
public void singleSendMail() {
// 如果是除杭州region外的其它region(如新加坡、澳洲Region),需要将下面的"cn-hangzhou"替换为"ap-southeast-1"、或"ap-southeast-2"。
//请在环境变量中配置ALIBABA_CLOUD_ACCESS_KEY_ID,ALIBABA_CLOUD_ACCESS_KEY_SECRET。
//参考文档:https://www.alibabacloud.com/help/zh/directmail/latest/configure-authentication-accesskey-in-environment-variables
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// 如果是除杭州region外的其它region(如新加坡region), 需要做如下处理
//try {
//DefaultProfile.addEndpoint("dm.ap-southeast-1.aliyuncs.com", "ap-southeast-1", "Dm", "dm.ap-southeast-1.aliyuncs.com");
//} catch (ClientException e) {
//e.printStackTrace();
//}
IAcsClient client = new DefaultAcsClient(profile);//建议初始化一次就可以,初始化多次也不影响功能,但是性能有损失
SingleSendMailRequest request = new SingleSendMailRequest();
try {
//request.setVersion("2017-06-22");// 如果是除杭州region外的其它region(如新加坡region),必须指定为2017-06-22
request.setAccountName("控制台创建的发信地址");
request.setFromAlias("发信人昵称");//发信人昵称,长度小于15个字符。
request.setAddressType(1);//0:为随机账号 1:为发信地址
request.setTagName("控制台创建的标签");
request.setReplyToAddress(true);// 是否启用管理控制台中配置好回信地址(状态须验证通过),取值范围是字符串true或者false
request.setToAddress("目标地址");
//可以给多个收件人发送邮件,收件人之间用逗号分开,批量发信建议使用BatchSendMailRequest方式
//request.setToAddress("邮箱1,邮箱2");
request.setSubject("邮件主题");
//如果采用byte[].toString的方式的话请确保最终转换成utf-8的格式再放入htmlbody和textbody,若编码不一致则会被当成垃圾邮件。
//注意:文本邮件的大小限制为3M,过大的文本会导致连接超时或413错误
request.setHtmlBody("邮件正文");
//SDK 采用的是http协议的发信方式, 默认是GET方法,有一定的长度限制。
//若textBody、htmlBody或content的大小不确定,建议采用POST方式提交,避免出现uri is not valid异常
request.setMethod(MethodType.POST);
//开启需要备案,0关闭,1开启
//request.setClickTrace("0");
//如果调用成功,正常返回httpResponse;如果调用失败则抛出异常,需要在异常中捕获错误异常码;错误异常码请参考对应的API文档;
SingleSendMailResponse httpResponse = client.getAcsResponse(request);
} catch (ServerException e) {
//捕获错误异常码
System.out.println("ErrCode : " + e.getErrCode());
e.printStackTrace();
}
catch (ClientException e) {
//捕获错误异常码
System.out.println("ErrCode : " + e.getErrCode());
e.printStackTrace();
}
}
}
单击这里获取更多Java SDK的使用提示。
另调用模板批量发信请使用BatchSendMailRequest,相关修改:
request.setTemplateName("test模板");
request.setReceiversName("测试-test");
其中“test模板”为模板名称;“测试-test”为收件人列表名称。