200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > JAVA 发送阿里云短信

JAVA 发送阿里云短信

时间:2022-01-04 23:33:23

相关推荐

JAVA 发送阿里云短信

支持批量发送短信、单条发送短信。

查询短信发送状态等接口。

<dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi0525</artifactId></dependency>

package com.dpxdata.backend.sms.aliyun;import com.alibaba.fastjson.JSON;import com.aliyun.dysmsapi0525.Client;import com.aliyun.dysmsapi0525.models.*;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/*** 阿里云短信发送* @author Lish**/public class AliyunSmsSend {/*** 单条短信发送* @param phoneNumbers 接收短信的手机号码,多个用英文逗号隔开* @param signName 短信签名名称,eg: "阿里云"* @param templateCode 短信模板CODE* @param templateParam 短信模板变量对应的实际值,eg:{"code":"1234"}* @return sendResp.body.bizId可用于查询短信发送结果* @throws Exception*/public static SendSmsResponse send(String phoneNumbers, String signName, String templateCode, String templateParam) throws Exception {com.aliyun.dysmsapi0525.Client client = AliyunSmsBase.createClient("accessKeyId", "keySecret");SendSmsRequest sendReq = new SendSmsRequest().setPhoneNumbers(phoneNumbers).setSignName(signName).setTemplateCode(templateCode).setTemplateParam(templateParam);SendSmsResponse sendResp = client.sendSms(sendReq);String code = sendResp.body.code;if (!com.mon.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}public static SendSmsResponse send(com.aliyun.dysmsapi0525.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.mon.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}/*** 批量短信发送* @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(String phoneNumberJson, String signNameJson, String templateCode, String templateParamJson) throws Exception {com.aliyun.dysmsapi0525.Client client = AliyunSmsBase.createClient("accessKeyId", "keySecret");SendBatchSmsRequest sendReq = new SendBatchSmsRequest().setPhoneNumberJson(phoneNumberJson).setSignNameJson(signNameJson).setTemplateCode(templateCode).setTemplateParamJson(templateParamJson);SendBatchSmsResponse sendResp = client.sendBatchSms(sendReq);String code = sendResp.body.code;if (!com.mon.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}/*** 单条短信发送 多个手机号发送结果查询* @param phoneNumbers 接收短信的手机号码* @param bizId 发送回执ID,即发送流水号。调用发送接口SendSms或SendBatchSms发送短信时,返回值中的BizId字段。* @param pageSize 分页查看发送记录,指定每页显示的短信记录数量 取值范围为1~50* @param currentPage 分页查看发送记录,指定发送记录的当前页码。* @return Map集合 key:手机号value返回结果*/public static Map<String, QuerySendDetailsResponse> sendResultMany(String phoneNumbers, String bizId, String date, Long pageSize, Long currentPage) throws Exception {com.aliyun.dysmsapi0525.Client client = AliyunSmsBase.createClient("accessKeyId", "keySecret");Map<String, QuerySendDetailsResponse> map = new ConcurrentHashMap<>();java.util.List<String> phoneNums = Arrays.asList(phoneNumbers.split(","));for (String phoneNum : phoneNums) {QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest().setPhoneNumber(com.mon.assertAsString(phoneNum)).setBizId(bizId).setSendDate(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.mon.equalString("" + dto.sendStatus + "", "3")) {//System.out.println("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + "");//} else if (com.mon.equalString("" + dto.sendStatus + "", "2")) {//System.out.println("" + dto.phoneNum + " 发送失败");//} else {//System.out.println("" + dto.phoneNum + " 正在发送中...");//}// }map.put(phoneNum, queryResp);}return map;}/*** 根据日期获取统计数据* @param isGlobe 1:国内 2:2:国际/港澳台短信发送记录。* @param startDate 开始日期,格式为yyyyMMdd,例如1225。* @param endDate 结束日期,格式为yyyyMMdd,例如1225。* @param pageIndex 页码。默认取值为1。* @param pageSize 页数。取值范围:1~50。* @return*/public static QuerySendStatisticsResponse getSendStatistics(Integer isGlobe, String startDate, String endDate, Integer pageIndex, Integer pageSize) {Client client = null;try {client = AliyunSmsBase.createClient("accessKeyId", "keySecret");QuerySendStatisticsRequest query = new QuerySendStatisticsRequest();query.setIsGlobe(isGlobe);query.setStartDate(startDate);query.setEndDate(endDate);query.setPageIndex(pageIndex);query.setPageSize(pageSize);QuerySendStatisticsResponse querySendStatisticsResponse = client.querySendStatistics(query);return querySendStatisticsResponse;} catch (Exception e) {e.printStackTrace();}return null;}}

package com.dpxdata.backend.sms.aliyun;import com.aliyun.teaopenapi.models.*;public class AliyunSmsBase {/*** 使用AK&SK初始化账号Client* @param accessKeyId* @param accessKeySecret* @return Client* @throws Exception*/public static com.aliyun.dysmsapi0525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {Config config = new Config()// 您的AccessKey ID.setAccessKeyId(accessKeyId)// 您的AccessKey Secret.setAccessKeySecret(accessKeySecret);// 访问的域名config.endpoint = "";return new com.aliyun.dysmsapi0525.Client(config);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。