今天准备来对接阿里云短信接口
首先找到阿里云短信SDK:https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?spm=a2c4g.11186623.0.0.7dd67218eyVDsB&version=2017-05-25&language=java-tea
目前使用:

<dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.6</version>
</dependency>

然后开始写代码了
阿里云短信提供5大服务:发送、记录、签名、模板、短链
首先我们要先建模板,然后签名、发送、记录,短链最后弄,好多人用不到短链
注意:模板和签名都需要审核的
首先来个基础类:
使用AK&SK初始化账号Client 这个是所有接口都需要的参数

package com.menzhen.common.utils.sms;import com.aliyun.teaopenapi.models.*;/*** 阿里云短信账号初始化* @author WJ**/
public class AliyunSmsBase {/*** 使用AK&SK初始化账号Client* @param accessKeyId* @param accessKeySecret* @return Client* @throws Exception*/public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {Config config = new Config()// 您的AccessKey ID.setAccessKeyId(accessKeyId)// 您的AccessKey Secret.setAccessKeySecret(accessKeySecret);// 访问的域名config.endpoint = "dysmsapi.aliyuncs.com";return new com.aliyun.dysmsapi20170525.Client(config);}
}

1、模板
模板有4个接口:申请、删除、查询审核状态、修改未通过审核的短信模板
阿里云短信模板代码:

package com.menzhen.common.utils.sms;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.tea.TeaConverter;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaPair;
import com.aliyun.teaopenapi.models.*;/*** 阿里云短信模板* @author WJ**/
public class AliyunSmsTemplate {/*** 添加短信模板* @param client 调用createClient()创建* @param templateType 0:验证码。1:短信通知。2:推广短信。3:国际/港澳台消息。* @param templateName 模板名称,长度为1~30个字符。* @param templateContent 模板内容,长度为1~500个字符。* @param remark 短信模板申请说明。长度为1~100个字符。* @return 记得把返回的值存起来 特别是TemplateCode(resp.getBody().templateCode)* 返回示例 {"TemplateCode": "SMS_16703****","Message": "OK","RequestId": "0A974B78-02BF-4C79-ADF3-90CFBA1B55B1","TemplateContent": "亲爱的会员!阿里云短信服务祝您新年快乐!","TemplateName": "阿里云短信测试模板","TemplateType": "1","CreateDate": "2019-06-04 11:42:17","Code": "OK","Reason": "无审批备注","TemplateStatus": "1"}* @throws Exception*/public static AddSmsTemplateResponse addSmsTemplate(com.aliyun.dysmsapi20170525.Client client, Integer templateType, String templateName, String templateContent, String remark) throws Exception {AddSmsTemplateRequest req = new AddSmsTemplateRequest().setTemplateType(templateType).setTemplateName(templateName).setTemplateContent(templateContent).setRemark(remark);AddSmsTemplateResponse resp = client.addSmsTemplate(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("添加短信模板:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));return resp;}/*** 删除短信模板* @param client 调用createClient()创建* @param templateCode 短信模板code 您可以在控制台模板管理页面或API接口addSmsTemplate()的返回参数中获取短信模板CODE。如果需要删除模板记得把添加短信模板中返回的值存起来* 返回示例{"TemplateCode": "SMS_20375****","Message": "OK","RequestId": "CCA2BCFF-2BA7-427C-90EE-AC6994748607","Code": "OK"}* @throws Exception*/public static void deleteSmsTemplate(com.aliyun.dysmsapi20170525.Client client, String templateCode) throws Exception {DeleteSmsTemplateRequest req = new DeleteSmsTemplateRequest().setTemplateCode(templateCode);DeleteSmsTemplateResponse resp = client.deleteSmsTemplate(req);System.err.println("删除短信模板:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 修改短信模板* @param client 调用createClient()创建* @param templateType 0:验证码。1:短信通知。2:推广短信。3:国际/港澳台消息。* @param templateName 模板名称,长度为1~30个字符。* @param templateCode 您可以登录短信服务控制台,选择国内消息或国际/港澳台消息,在模板管理页签下查看模板CODE。也可以通过AddSmsTemplate接口获取短信模板CODE。* @param templateContent 模板内容,长度为1~500个字符。* @param remark 短信模板申请说明。长度为1~100个字符。* 返回示例{"TemplateCode": "SMS_15255****","Message": "OK","RequestId": "F655A8D5-B967-440B-8683-DAD6FF8DE990","Code": "OK"}* @throws Exception*/public static void modifySmsTemplate(com.aliyun.dysmsapi20170525.Client client, Integer templateType, String templateName, String templateCode, String templateContent, String remark) throws Exception {ModifySmsTemplateRequest req = new ModifySmsTemplateRequest().setTemplateType(templateType).setTemplateName(templateName).setTemplateCode(templateCode).setTemplateContent(templateContent).setRemark(remark);ModifySmsTemplateResponse resp = client.modifySmsTemplate(req);System.err.println("修改短信模板:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 查询模板详情* @param client 调用createClient()创建* @param templateCode 您可以登录短信服务控制台,选择国内消息或国际/港澳台消息,在模板管理页签中查看模板CODE。也可以通过AddSmsTemplate接口获取模板CODE。* 返回示例{"TemplateCode": "SMS_16703****","Message": "OK","RequestId": "0A974B78-02BF-4C79-ADF3-90CFBA1B55B1","TemplateContent": "亲爱的会员!阿里云短信服务祝您新年快乐!","TemplateName": "阿里云短信测试模板","TemplateType": "1","CreateDate": "2019-06-04 11:42:17","Code": "OK","Reason": "无审批备注","TemplateStatus": "1"}* @throws Exception*/public static void querySmsTemplate(com.aliyun.dysmsapi20170525.Client client, String templateCode) throws Exception {QuerySmsTemplateRequest req = new QuerySmsTemplateRequest().setTemplateCode(templateCode);QuerySmsTemplateResponse resp = client.querySmsTemplate(req);System.err.println("查询模板详情:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}public static void main(String[] args_) throws Exception {Client client = AliyunSmsBase.createClient("", "");// 短信类型Integer templateType = 1;// 模板名称String templateName = "短信测试模板";// 模板内容String templateContent = "阿里云短信服务祝您新年快乐";// 短信模板申请说明String remark = "短信通知客户";AddSmsTemplateResponse addSmsTemplateResp = addSmsTemplate(client, templateType, templateName, templateContent, remark);querySmsTemplate(client, addSmsTemplateResp.body.templateCode);}
}

2、签名
签名也有4个接口:申请、删除、查询审核状态、修改短信签名证明文件
阿里云短信签名代码:

package com.menzhen.common.utils.sms;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.tea.TeaConverter;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaPair;/*** 阿里云短信签名* @author WJ**/
public class AliyunSmsSign {/*** 添加短信签名* @param client 调用AliyunSmsBase.createClient()创建* @param signName 签名名称。签名必须符合个人用户签名规范https://help.aliyun.com/document_detail/108076.html?spm=api-workbench.API%20Explorer.0.0.1f6b1e0fdiG0AW* @param signSource 签名来源。取值:0:企事业单位的全称或简称。1:工信部备案网站的全称或简称。2:App应用的全称或简称。3:公众号或小程序的全称或简称。4:电商平台店铺名的全称或简称。5:商标名的全称或简称。* @param remark 短信签名申请说明。请在申请说明中详细描述您的业务使用场景,申请工信部备案网站的全称或简称请在此处填写域名,长度不超过200个字符。* @param fileContents 签名的资质证明文件经base64编码后的字符串。图片不超过2 MB。* @param fileSuffix 签名的证明文件格式,支持上传多张图片。当前支持JPG、PNG、GIF或JPEG格式的图片。* 返回示例{"SignName": "阿里云","Message": "OK","RequestId": "F655A8D5-B967-440B-8683-DAD6FF8DE990","Code": "OK"}* @throws Exception*/public static void addSmsSign(com.aliyun.dysmsapi20170525.Client client, String signName, Integer signSource, String remark, String fileContents, String fileSuffix) throws Exception {AddSmsSignRequest.AddSmsSignRequestSignFileList signFileList = new AddSmsSignRequest.AddSmsSignRequestSignFileList();signFileList.fileContents = fileContents;signFileList.fileSuffix = fileSuffix;AddSmsSignRequest req = new AddSmsSignRequest().setSignName(signName).setSignSource(signSource).setRemark(remark).setSignFileList(java.util.Arrays.asList(signFileList));AddSmsSignResponse resp = client.addSmsSign(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("添加短信签名:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 删除短信签名* @param client 调用AliyunSmsBase.createClient()创建* @param signName 短信签名。必须是本账号已申请的短信签名。* @throws Exception*/public static void deleteSmsSign(com.aliyun.dysmsapi20170525.Client client, String signName) throws Exception {DeleteSmsSignRequest req = new DeleteSmsSignRequest().setSignName(signName);DeleteSmsSignResponse resp = client.deleteSmsSign(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("删除短信签名:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 修改短信签名* @param client 调用AliyunSmsBase.createClient()创建* @param signName 签名名称。签名必须符合个人用户签名规范https://help.aliyun.com/document_detail/108076.html?spm=api-workbench.API%20Explorer.0.0.1f6b1e0fdiG0AW* @param signSource 签名来源。取值:0:企事业单位的全称或简称。1:工信部备案网站的全称或简称。2:App应用的全称或简称。3:公众号或小程序的全称或简称。4:电商平台店铺名的全称或简称。5:商标名的全称或简称。* @param remark 短信签名申请说明。请在申请说明中详细描述您的业务使用场景,申请工信部备案网站的全称或简称请在此处填写域名,长度不超过200个字符。* @param fileContents 签名的资质证明文件经base64编码后的字符串。图片不超过2 MB。* @param fileSuffix 签名的证明文件格式,支持上传多张图片。当前支持JPG、PNG、GIF或JPEG格式的图片。* @throws Exception*/public static void modifySmsSign(com.aliyun.dysmsapi20170525.Client client, String signName, Integer signSource, String remark, String fileContents, String fileSuffix) throws Exception {ModifySmsSignRequest.ModifySmsSignRequestSignFileList signFileList = new ModifySmsSignRequest.ModifySmsSignRequestSignFileList();signFileList.fileContents = fileContents;signFileList.fileSuffix = fileSuffix;ModifySmsSignRequest req = new ModifySmsSignRequest().setSignName(signName).setSignSource(signSource).setRemark(remark).setSignFileList(java.util.Arrays.asList(signFileList));ModifySmsSignResponse resp = client.modifySmsSign(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("修改短信签名:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 查询短信签名申请状态* @param client 调用createClient()创建* @param signName 签名名称。* 返回示例{"Message": "OK","RequestId": "CC89A90C-978F-46AC-B80D-54738371E7CA","SignStatus": 1,"CreateDate": " 2019-01-08 16:44:13","Code": "OK","SignName": "阿里云","Reason": "文件不能证明信息真实性,请重新上传"}* @throws Exception*/public static void querySmsSign(com.aliyun.dysmsapi20170525.Client client, String signName) throws Exception {QuerySmsSignRequest req = new QuerySmsSignRequest().setSignName(signName);QuerySmsSignResponse resp = client.querySmsSign(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("查询短信签名申请状态:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}public static void main(String[] args_) throws Exception {Client client = AliyunSmsBase.createClient("", "");//签名名称String signName = "**";//签名来源Integer signSource = 0;//短信签名申请说明String remark = "我想申请签名";//签名的资质证明文件(不超过2M的图片转成base64编码)String fileContents = "R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAA";//签名的证明文件格式(图片后缀JPG、PNG、GIF或JPEG)String fileSuffix = "jpg";addSmsSign(client, signName, signSource, remark, fileContents, fileSuffix);querySmsSign(client, signName);}
}

3、发送
发送有2个接口:发送短信、批量发送短信
阿里云短信发送代码:

package com.menzhen.common.utils.sms;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.*;/*** 阿里云短信发送* @author WJ**/
public class AliyunSmsSend {/*** 单条短信发送* @param client 调用AliyunSmsBase.createClient()创建* @param phoneNumbers 接收短信的手机号码,多个用英文逗号隔开* @param signName 短信签名名称,eg: "阿里云"* @param TemplateCode 短信模板CODE* @param templateParam 短信模板变量对应的实际值,eg:{"code":"1234"}* @return sendResp.body.bizId可用于查询短信发送结果* @throws Exception*/public static SendSmsResponse send(com.aliyun.dysmsapi20170525.Client client, String phoneNumbers, String signName, String templateCode, String templateParam) throws Exception {SendSmsRequest sendReq = new SendSmsRequest().setPhoneNumbers(phoneNumbers).setSignName(signName).setTemplateCode(templateCode).setTemplateParam(templateParam);SendSmsResponse sendResp = client.sendSms(sendReq);String code = sendResp.body.code;if (!com.aliyun.teautil.Common.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}/*** 批量短信发送* @param client 调用AliyunSmsBase.createClient()创建* @param phoneNumberJson  接收短信的手机号码,JSON 数组格式,eg: ["1590***0000","13500***000"]* @param signNameJson 短信签名名称,JSON 数组格式,eg: ["阿里云","阿里巴巴"]* @param templateCode 短信模板CODE* @param templateParamJson 短信模板变量对应的实际值,JSON 数组格式,eg:[{"code":"1234"},{"code":"2345"}]* @return sendResp.body.bizId可用于查询短信发送结果* @throws Exception*/public static SendBatchSmsResponse batchSend(com.aliyun.dysmsapi20170525.Client client, String phoneNumberJson, String signNameJson, String templateCode, String templateParamJson) throws Exception {SendBatchSmsRequest sendReq = new SendBatchSmsRequest().setPhoneNumberJson(phoneNumberJson).setSignNameJson(signNameJson).setTemplateCode(templateCode).setTemplateParamJson(templateParamJson);SendBatchSmsResponse sendResp = client.sendBatchSms(sendReq);String code = sendResp.body.code;if (!com.aliyun.teautil.Common.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}/*** 单条短信发送 多个手机号发送结果查询* @param client 调用AliyunSmsBase.createClient()创建* @param phoneNumbers 接收短信的手机号码* @param bizId 发送回执ID,即发送流水号。调用发送接口SendSms或SendBatchSms发送短信时,返回值中的BizId字段。* @param pageSize 分页查看发送记录,指定每页显示的短信记录数量 取值范围为1~50 * @param currentPage 分页查看发送记录,指定发送记录的当前页码。* @return Map集合 key:手机号value返回结果* 返回示例QuerySendDetails:{"TotalCount":1,"Message":"OK","RequestId":"819BE656-D2E0-4858-8B21-B2E477085AAF","SmsSendDetailDTOs":{"SmsSendDetailDTO":{"SendDate":"2019-01-08 16:44:10","OutId":123,"SendStatus":3,"ReceiveDate":"2019-01-08 16:44:13","ErrCode":"DELIVERED","TemplateCode":"SMS_122310183","Content":"【阿里云】验证码为:123,您正在登录,若非本人操作,请勿泄露","PhoneNum":15298356881}},"Code":"OK"}* @throws Exception*/public static Map<String, QuerySendDetailsResponse> sendResultMany(com.aliyun.dysmsapi20170525.Client client, String phoneNumbers, String bizId, Long pageSize, Long currentPage) throws Exception {Map<String, QuerySendDetailsResponse> map = new HashMap<String, QuerySendDetailsResponse>();java.util.List<String> phoneNums = Arrays.asList(phoneNumbers.split(","));for (String phoneNum : phoneNums) {SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest().setPhoneNumber(com.aliyun.teautil.Common.assertAsString(phoneNum)).setBizId(bizId).setSendDate(ft.format(new Date())).setPageSize(pageSize).setCurrentPage(currentPage);QuerySendDetailsResponse queryResp = client.querySendDetails(queryReq);java.util.List<QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO> dtos = queryResp.body.smsSendDetailDTOs.smsSendDetailDTO;// 打印结果for (QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO dto : dtos) {if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "3")) {System.out.println("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + "");} else if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "2")) {System.out.println("" + dto.phoneNum + " 发送失败");} else {System.out.println("" + dto.phoneNum + " 正在发送中...");}}map.put(phoneNum, queryResp);}return map;}/*** 单条短信发送 单个手机号发送结果查询* @param client 调用AliyunSmsBase.createClient()创建* @param phoneNumbers 接收短信的手机号码* @param bizId 发送回执ID,即发送流水号。调用发送接口SendSms或SendBatchSms发送短信时,返回值中的BizId字段。* @param pageSize 分页查看发送记录,指定每页显示的短信记录数量 取值范围为1~50 * @param currentPage 分页查看发送记录,指定发送记录的当前页码。* @return 返回结果返回示例QuerySendDetails:{"TotalCount":1,"Message":"OK","RequestId":"819BE656-D2E0-4858-8B21-B2E477085AAF","SmsSendDetailDTOs":{"SmsSendDetailDTO":{"SendDate":"2019-01-08 16:44:10","OutId":123,"SendStatus":3,"ReceiveDate":"2019-01-08 16:44:13","ErrCode":"DELIVERED","TemplateCode":"SMS_122310183","Content":"【阿里云】验证码为:123,您正在登录,若非本人操作,请勿泄露","PhoneNum":15298356881}},"Code":"OK"}* @throws Exception*/public static QuerySendDetailsResponse sendResultOne(com.aliyun.dysmsapi20170525.Client client, String phone, String bizId, Long pageSize, Long currentPage) throws Exception {SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest().setPhoneNumber(com.aliyun.teautil.Common.assertAsString(phone)).setBizId(bizId).setSendDate(ft.format(new Date())).setPageSize(10L).setCurrentPage(1L);QuerySendDetailsResponse queryResp = client.querySendDetails(queryReq);java.util.List<QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO> dtos = queryResp.body.smsSendDetailDTOs.smsSendDetailDTO;// 打印结果for (QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO dto : dtos) {if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "3")) {System.out.println("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + "");} else if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "2")) {System.out.println("" + dto.phoneNum + " 发送失败");} else {System.out.println("" + dto.phoneNum + " 正在发送中...");}}return queryResp;}/*** 批量短信发送 多个手机号发送结果查询* @param client 调用AliyunSmsBase.createClient()创建* @param phoneNumberJson 接收短信的手机号码* @param bizId 发送回执ID,即发送流水号。调用发送接口SendSms或SendBatchSms发送短信时,返回值中的BizId字段。* @param pageSize 分页查看发送记录,指定每页显示的短信记录数量 取值范围为1~50 * @param currentPage 分页查看发送记录,指定发送记录的当前页码。* @return Map集合 key:手机号value返回结果* 返回示例QuerySendDetails:{"TotalCount":1,"Message":"OK","RequestId":"819BE656-D2E0-4858-8B21-B2E477085AAF","SmsSendDetailDTOs":{"SmsSendDetailDTO":{"SendDate":"2019-01-08 16:44:10","OutId":123,"SendStatus":3,"ReceiveDate":"2019-01-08 16:44:13","ErrCode":"DELIVERED","TemplateCode":"SMS_122310183","Content":"【阿里云】验证码为:123,您正在登录,若非本人操作,请勿泄露","PhoneNum":15298356881}},"Code":"OK"}* @throws Exception*/public static Map<String, QuerySendDetailsResponse> batchSendResultMany(com.aliyun.dysmsapi20170525.Client client, String phoneNumberJson, String bizId, Long pageSize, Long currentPage) throws Exception {java.util.List<Object> phoneNums = com.aliyun.teautil.Common.assertAsArray(com.aliyun.teautil.Common.parseJSON(phoneNumberJson));String phoneNumbers = "";for (Object phoneNum : phoneNums) {phoneNumbers += com.aliyun.teautil.Common.assertAsString(phoneNum) + ",";}phoneNumbers = phoneNumbers.substring(0, phoneNumbers.length()-1);return sendResultMany(client, phoneNumbers, bizId, pageSize, currentPage);}/*** 批量短信发送 单个手机号发送结果查询* @param client 调用AliyunSmsBase.createClient()创建* @param phone 接收短信的手机号码* @param bizId 发送回执ID,即发送流水号。调用发送接口SendSms或SendBatchSms发送短信时,返回值中的BizId字段。* @param pageSize 分页查看发送记录,指定每页显示的短信记录数量 取值范围为1~50 * @param currentPage 分页查看发送记录,指定发送记录的当前页码。* @return 返回结果* 返回示例QuerySendDetails:{"TotalCount":1,"Message":"OK","RequestId":"819BE656-D2E0-4858-8B21-B2E477085AAF","SmsSendDetailDTOs":{"SmsSendDetailDTO":{"SendDate":"2019-01-08 16:44:10","OutId":123,"SendStatus":3,"ReceiveDate":"2019-01-08 16:44:13","ErrCode":"DELIVERED","TemplateCode":"SMS_122310183","Content":"【阿里云】验证码为:123,您正在登录,若非本人操作,请勿泄露","PhoneNum":15298356881}},"Code":"OK"}* @throws Exception*/public static QuerySendDetailsResponse batchSendResultOne(com.aliyun.dysmsapi20170525.Client client, String phone, String bizId, Long pageSize, Long currentPage) throws Exception {return sendResultOne(client, phone, bizId, pageSize, currentPage);}public static void main(String[] args_) throws Exception {Client client = AliyunSmsBase.createClient("", "");//接收短信的手机String phone = "";//签名String signName = "";//模板String templateCode = "";//短信模板变量对应的实际值String templateParam = "";//发送短信SendSmsResponse send = send(client, phone, signName, templateCode, templateParam);com.aliyun.teautil.Common.sleep(10000);//查询发送短信结果QuerySendDetailsResponse sendResultOne = sendResultOne(client, phone, send.getBody().getBizId(), 10L, 1L);System.err.println(sendResultOne);}
}

4、记录
获取短信发送结果 上面3、发送的代码已经写进去了
5、短链
短链有3个接口:创建短链、删除短链、短链状态查询
阿里云短信短链代码:

package com.menzhen.common.utils.sms;import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.tea.TeaConverter;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaPair;/*** 阿里云短信短链* @author WJ**/
public class AliyunSmsShortChain {/*** 创建短链* @param client 调用AliyunSmsBase.createClient()创建* @param sourceUrl 原始链接地址。不超过1000个字符。* @param shortUrlName 短链服务名称。不超过12个字符。* @param effectiveDays 短链服务使用有效期。单位为天,有效期最长为30天。* @return 结果* 返回示例{"Message": "OK","RequestId": "819BE656-D2E0-4858-8B21-B2E477085AAF","Data": {"SourceUrl": "https://www.****.com/product/sms","ShortUrl": "http://****.cn/6y8uy7","ExpireDate": "2022-09-19 11:21:11"},"Code": "OK"}* @throws Exception*/public static AddShortUrlResponse addShortUrl(com.aliyun.dysmsapi20170525.Client client, String sourceUrl, String shortUrlName, String effectiveDays) throws Exception {AddShortUrlRequest req = new AddShortUrlRequest().setSourceUrl(sourceUrl).setShortUrlName(shortUrlName).setEffectiveDays(effectiveDays);AddShortUrlResponse resp = client.addShortUrl(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("创建短链:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));return resp;}/*** 删除短链* @param client 调用AliyunSmsBase.createClient()创建* @param sourceUrl 原始链接地址。不超过1000个字符。* @throws Exception*/public static void deleteShortUrl(com.aliyun.dysmsapi20170525.Client client, String sourceUrl) throws Exception {DeleteShortUrlRequest req = new DeleteShortUrlRequest().setSourceUrl(sourceUrl);DeleteShortUrlResponse resp = client.deleteShortUrl(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("删除短链:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));}/*** 短链查询* @param client 调用AliyunSmsBase.createClient()创建* @param shortUrl 生成的短链服务地址。可通过AddShortUrl接口获取。* return 结果* 返回示例{"Message": "OK","RequestId": "819BE656-D2E0-4858-8B21-B2E477085AAF","Data": {"ShortUrlName": "阿里短链测试","SourceUrl": "https://www.****.com/product/sms","ShortUrl": "http://****.cn/6y8uy7","ExpireDate": "2022-09-19 11:21:11","PageViewCount": 300,"CreateDate": "2019-01-08 16:44:13","ShortUrlStatus": "expired","UniqueVisitorCount": 23},"Code": "OK"}* @throws Exception*/public static QueryShortUrlResponse queryShortUrl(com.aliyun.dysmsapi20170525.Client client, String shortUrl) throws Exception {QueryShortUrlRequest req = new QueryShortUrlRequest().setShortUrl(shortUrl);QueryShortUrlResponse resp = client.queryShortUrl(req);if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {throw new TeaException(TeaConverter.buildMap(new TeaPair("code", resp.body.code),new TeaPair("message", resp.body.message)));}System.err.println("短链状态查询:");System.err.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(resp)));return resp;}public static void main(String[] args_) throws Exception {String sourceUrl = "";String shortUrlName = "";String effectiveDays = "";com.aliyun.dysmsapi20170525.Client client = AliyunSmsBase.createClient("", "");addShortUrl(client, sourceUrl, shortUrlName, effectiveDays);}
}

就这么多了 去测试了
更多资料请参考:
阿里云OpenAPI链接: https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms?params={}

阿里云短信接口对接(java版)相关推荐

  1. 阿里云短信验证解决方案(java版)(redis存储)

    阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...

  2. Java调用阿里云短信接口,发送短信

    Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...

  3. TP5调用阿里云短信接口实现发送短信功能

    TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...

  4. springboot项目调用阿里云短信接口(包括短信上行)

    最近一直在做项目,很久没有写过博客了,最近做的一个项目中遇到了一个业务需要用到短信功能包括了发送短信和短信回复之后要收到回复内容,阿里云短信服务是一个非常好的平台,里面提供了多种短信接口可以供我们使用 ...

  5. 云片短信php接口_php与阿里云短信接口接入

    使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId 相当于你的个人账户密钥: 2. accessKeySecr ...

  6. C# 阿里云短信接口调用(不使用SDK,单文件完成)

    虽然阿里云短信接口,提供了很多种语言的SKD,但是对应C#而言,如果使用阿里云SDK,你的项目中需要引入一大堆的dll,像这样: 我只需要发个短信,没必要引入这么多dll吧.于是,根据阿里云官方文档, ...

  7. 微信小程序手机号验证码登录(调阿里云短信接口)

    小程序效果 代码 <view class='content'><form bindsubmit="formSubmit"><view class='p ...

  8. 蚂蚁分类信息系统mymps对接阿里云短信接口

    蚂蚁分类信息系统(mymps)是基于PHP+Mysql开发的分类信息程序CMS,以负载能力强.安全性高.操作简单而著称,深受分类信息网站站长喜爱,为在WINDOW/LINUX服务器上架设分类信息网站提 ...

  9. 阿里云短信接口开发实践(Java)

    随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...

  10. 阿里云短信官方的java示例是错误的

    阿里云短信前身是大鱼,现在移入了阿里云短信. 下载了官方sdk发现一大坨.我不需要啊. 下面自己精简一下,写一个. 谁知道一直提示签名不正确. 看了官网的示例然后对比了一下官方的php sdk 这,j ...

最新文章

  1. 字符编码_Windows资料
  2. Python Cookbook(第3版)中文版:15.17 传递文件名给C扩展
  3. SpringSecurity集中式整合之授权操作
  4. linux之head命令
  5. uva 10479——The Hendrie Sequence
  6. C++(9)--裸指针、智能指针、引用
  7. 企业微信_客户联系,获取客户及客户群列表及详情
  8. 网口监视报文工具_真是神器!这款网络排查工具!
  9. Java 串口 mysql_java串口通讯
  10. JVM-class文件完全解析-字段表集合
  11. Python 多线程-共享全局变量问题 -args参数 同步的概念
  12. java 车牌号正则_最新车牌号码(包括新能源车牌)正则表达式
  13. java zh_java 中zhis的用法
  14. 火狐插件(fireBug)
  15. MTK平台创建Vendor方法-v1.4
  16. 自媒体娱乐热点素材怎么找?
  17. SAP入门技术分享四:模块化程序
  18. 等级保护测评工作重点难点_重点保护
  19. (转载潘老师的博文)潘爱民:我只是个技术爱好者
  20. 移动资费:是0.07元/分钟还是0.60元/分钟?

热门文章

  1. DirectX 基础总结笔记
  2. 惠普803墨盒清零步骤_打印机惠普7110墨盒清零的方法
  3. Android adb shell命令详解及实例
  4. HttpClient 4 和 HttpClient 3 设置超时
  5. [附源码]计算机毕业设计JAVAJAVA大方汽车租赁管理系统
  6. 大学计算机基础vfp程序设计课程试验报告簿,VF程序设计实验报告册(实践教程).doc...
  7. 【PPT】学术答辩163套模板
  8. FreeMarker FTL标签
  9. 矩阵相乘的strassen算法_矩阵乘法Strassen算法
  10. edem合成运动教程