Springboot 使用阿里云api批量发送短信
批量发送短信
阿里云短信文档如下:短信批量发送API(SendBatchSms)
文章目录
- 批量发送短信
- 步骤 1 创建阿里云账号 步骤 2 获取阿里云访问密钥
- spring boot 项目引入阿里云短信依赖
- 我们这里使用引入依赖
- 1.引入库
- 写一个工具类
- spring boot 请求
步骤 1 创建阿里云账号 步骤 2 获取阿里云访问密钥
假设前2步你已经完成。步骤 3 在控制台完成模板与签名的申请,获得调用接口必备的参数
短信签名和短信模板你已经设置好
spring boot 项目引入阿里云短信依赖
或者自己下载SDK工具包
我们这里使用引入依赖
1.引入库
代码如下(示例):
<dependency><!-- 阿里云短信 --><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency><dependency><!-- 阿里云短信 --><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>
写一个工具类
SmsUtil工具类代码如下(示例):
//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的几个参数
final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,参考本文档步骤2
final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,参考本文档步骤2
//初始化ascClient,暂时不支持多region(请勿修改)
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
封装好等下步使用。
spring boot 请求
提示:以下代码仅供思路参考,完全复制粘贴可能会报错。
package com.wuliu.fa.Controller;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.github.pagehelper.Page;
import com.wuliu.fa.entity.company;
import com.wuliu.fa.service.CompanyService;
import com.wuliu.fa.util.ResponseResult;@RestController
public class manymessagsController extends BaseController{private Logger log = LoggerFactory.getLogger(this.getClass());@Autowiredprivate CompanyService companyservice;//预约发货短信@PostMapping( "/ssssmsXxs")@ResponseBodypublic ResponseResult<Map<String,String>> ssssmsXxs(String phone) throws Exception {Map<String,String> m=new HashMap<String,String>();int maxNums=100; //每次最多发送100条,我们一次批量发100条 int times =0;// 循环几个100 用List的长度 除 100int size=0; // //查询结果列表Page<company> companylist=companyservice.GetBycname("", 0, 101);size=companylist.size();if(size<100) {times=1;}else{times=(size-1)/maxNums +1; //为什么要-1 因为如果是200的时候,理论上次数应该是2,而不是3,如果是101,那么次数也是2,这样就保证次数准确。}List<String> phoneList= new ArrayList<>();List<String> templateList =new ArrayList<>();List<String > signNameList=new ArrayList<>();StringBuffer phoneNumberJson;StringBuffer templateParamJson;StringBuffer signNameJson;for(int j=0;j<times;j++){if(j>0&&(j*maxNums +1 >size)){ //边界判定,如果刚好是100条,那么times的值为2,这时候j 为1的时候 101 大于100结束循环,100条以内不生效break;}else{phoneNumberJson =new StringBuffer();templateParamJson =new StringBuffer();signNameJson= new StringBuffer();phoneNumberJson.append("[");templateParamJson.append("[");signNameJson.append("[");for(int k=j*maxNums;k<size && k<(j+1)*maxNums;k++){phoneNumberJson.append("\""+companylist.get(k).getTel()+"\",");signNameJson.append("\"你的签名\",");templateParamJson.append("{"+"\"name\":\""+companylist.get(k).getName()+"\","+"},");phoneNumberJson.deleteCharAt(phoneNumberJson.length()-1);//移除最后一个逗号字符,templateParamJson.deleteCharAt(templateParamJson.length()-1);//移除最后一个逗号字符signNameJson.deleteCharAt(signNameJson.length()-1);phoneNumberJson.append("]");templateParamJson.append("]");signNameJson.append("]");}phoneList.add(phoneNumberJson.toString());templateList.add(templateParamJson.toString());signNameList.add(signNameJson.toString());}}//组装请求对象if(size>0&×==phoneList.size()){for(int i=0;i<times;i++){// SendBatchSmsRequest request = new SendBatchSmsRequest();// request.setMethod(MethodType.POST);// request.setPhoneNumberJson(phoneList.get(i));// request.setSignNameJson(singNameList.get(i));// request.setTemplateParamJson(templateList.get(i));// request.setTEmplateCode(AliSmsCode);// SendBatchSmsResponse sendSmsREsponse= acsClient.getAcsRAcsREsponse(request);// if(sendSmsREsponse.getCode()!=null && sendSmsREsponse.getCode().equalse("OK")){// //批量请求发送短信成功// System.out.println("批量短信发送成功:"+phoneList.size()+"条");// }else{// System.out.println("批量短信发送失败!");// }}Thread.sleep(100) ;//批量发送暂停100ms;m.put("msg", "发送成功");return new ResponseResult<Map<String,String>>(SUCCESS,m);}else{m.put("msg", "发送失败");return new ResponseResult<Map<String,String>>(SUCCESS,m);}}
}
Springboot 使用阿里云api批量发送短信相关推荐
- 阿里云API定时发送短信(小记)
定时任务的代码:import com.google.gson.Gson; import com.jianke.bid.common.SMSUtils; import org.springframewo ...
- 阿里云接口实现发送短信验证码
java 阿里云接口实现发送短信验证码 1. 阿里云后台配置短信相关 1.1 开通短信服务 1.2 添加模板签名 1.3 创建秘钥 1.4 短信需要后台授权--注意点 2 java--简单实现短信验证 ...
- 使用阿里云短信通知服务发送短信--工具类
public class AliyunUtils {public static boolean sendSMS(String mobilephone,Integer status) throws Se ...
- 基于MFC与阿里云制作简易发送短信
***~~ 做到最后可能会只是不能识别汉字,但是能识别英文和数字,有待改进的地方` ` ~~ *** # 详细步骤见如下 一. 新建一个MFC项目:打开VS2013,文件->新建->项目 ...
- springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...
- java 阿里云接口实现发送短信验证码
1.先去阿里云开通短信服务: 2.添加模板及签名:需要审核,个人账户审核就几分钟就OK 先解释一下模板及签名: 标准参照:https://help.aliyun.com/document_detail ...
- Yii2 + 阿里云 后台配置发送短信
1.登录阿里云账号之后 首先鼠标移动到你的头像上 点击AccessKey之后 创建 2.找到短信服务这里 申请签名 和 模板 3.登录yii2框架后台 填写上相对应的信息. 4.在控制器中: publ ...
- springMVC+阿里云API = 实现发送手机验证码短信
springMVC+阿里云API = 实现发送手机验证码短信 前段时间vue框架做了一个旅游APP软件,其中在用户登录APP的时候,我不仅提供了用户可以自己手动先去注册账号在进行登陆App.然后我还提 ...
- JAVA 实现阿里云短信申请模板以及批量发送短信
添加pom.xml依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java ...
- 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...
微信时代的今天,短信一样不可缺席,大系统都有集成短信接口. 若只是临时用一下,若能够直接在Excel上加工好内容就可以直接发送,这些假设在此篇批量群发短信功能中都为大家带来完美答案. 业务场景 不多说 ...
最新文章
- 使用Pyecharts制作Bar3D用法详解
- AI工程师面试知识点:神经网络相关
- BZOJ-1878: [SDOI2009]HH的项链(莫队算法)
- Linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)
- java中array,arrayList,iterator;
- Smarty2至Smarty3升级指南
- shell替换程序里的代码
- 网络通信误码率测试软件,微机在通信线路误码率测试中的应用
- javascript控制开始日期,和结束日期在同一个月
- 公差带与配合 常用基轴制公差带的相互关系
- 相机存储卡不小心格式化怎么恢复呢?
- apkanalyzer.bat could NOT be found in D:\Program Files\android-sdk的解决方案
- LeetCode--第25题K个一组翻转链表
- Java腐烂的橘子leetcode
- ImageMagick将多张图片拼接成一张图片_word转存技巧:如何将每页文档转换为图片保存?...
- IntelliJ IDEA商业版 -- 破解
- 怎样在普通java项目中使用aspectj
- 怎么批量转换图片格式?这些方法帮助你一键转换
- 【Arduino】mega2560 驱动grove 三色水墨屏
- 数组索引必须为正整数或逻辑值。