JAVA 发送阿里云短信
支持批量发送短信、单条发送短信。
查询短信发送状态等接口。
<dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId>
</dependency>
package com.dpxdata.backend.sms.aliyun;import com.alibaba.fastjson.JSON;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.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.dysmsapi20170525.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.aliyun.teautil.Common.equalString(code, "OK")) {throw new RuntimeException("错误信息: " + sendResp.body.message + "");}return sendResp;}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 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.dysmsapi20170525.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.aliyun.teautil.Common.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.dysmsapi20170525.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.aliyun.teautil.Common.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.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 isGlobe 1:国内 2:2:国际/港澳台短信发送记录。* @param startDate 开始日期,格式为yyyyMMdd,例如20181225。* @param endDate 结束日期,格式为yyyyMMdd,例如20181225。* @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.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);}
}
JAVA 发送阿里云短信相关推荐
- Java调用阿里云短信接口,发送短信
Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...
- java对接阿里云短信服务详解(验证码,推广短信,通知短信)
前言 小前提: - java:springboot框架,maven版本管理. - 阿里云:有账号,已经进行实名认证. java对接阿里云短信服务详解(验证码,推广短信,通知短信) 前言 1. 登录阿里 ...
- java实现阿里云短信验证注册--详细教程
java实现阿里云短信验证注册–详细教程 .项目中先引入依赖 <!--阿里云短信包--><dependency><groupId>com.aliyun</gr ...
- python发送阿里云短信教程
python发送阿里云短信教程 1.开通云短信 注册阿里云,开通短信服务. 2.快速学习 进入控制台后,点击左边的快速学习,申请签名,申请模板 签名与模板的生成需要审核,需等待,注意签名与模板作用范围 ...
- JAVA 实现阿里云短信申请模板以及批量发送短信
添加pom.xml依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java ...
- JAVA 实现阿里云短信发送功能
目录 1.引入依赖 2.添加.yml配置 3.短信接口开发 4.接口调用 1.引入依赖 引入阿里云短信依赖jar包 <!--阿里云服务sdk --> <dependency>& ...
- Java实现阿里云短信发送功能(保姆级!!!搞懂短信功能,这一篇就够了!)
目录 一.准备工作 1)功能如何切入? 2)为什么要用阿里云来实现? 二.阿里云部分 三.代码部分 OK,分享结束!收! 一.准备工作 1)功能如何切入? 第一步:分析业务需求,想要实现短信通知功能那 ...
- (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码
一.阿里云准备工作 1.阿里云短信服务-注册账号 阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮. 2.阿里云短信服务-设置短信签名(阿里云提供测试的签名,暂时可以 ...
- Java后端阿里云短信平台发送短信
最近做了关于阿里云平台发送短信的功能,记录下代码方便以后查阅: @Service public class ALiYunSMSServiceImpl implements ALiYunSMSServi ...
最新文章
- 衡量微型计算机的性能指标参数有哪些,衡量计算机性能的主要技术指标有哪些?...
- 未来3大趋势:人工智能 产业互联网 大数据与算法
- 原来R语言还有这些不为人知的用处!
- Delicious Apples
- 下载安装Redis+使用
- 【语音分离】基于matlab FastICA语音信号采集+混合+分离【含Matlab源码 008期】
- 高通WLAN框架学习(22)-- WPA3
- python io多路复用
- 执行python代码的方式_涨见识了,在终端执行 Python 代码的 6 种方式!
- Distiller:神经网络压缩研究框架
- 从华为起诉三星 看中国知识产权建设
- 分析及解决:虚拟机无法连接虚拟设备idel 0:1 问题
- 100元的C 软件开发培训班
- BZOJ4627: [BeiJing2016]回转寿司
- AB1756-L71固件下载(1)
- 她对他的爱,隔了万水千山
- Windows笔记本本地摄像头提供Rtsp视频流服务
- 从0基础学习MySQL数据库(三)
- 在c语言如何对拨码开关编程,实验四 指示灯和拨码开关实验_百度文库(15页)-原创力文档...
- 安徽计算机水平模拟考试系统准考证号,2019安徽计算机等考准考证打印入口