aliyun短信及短信模板操作
短信模板管理
管理接口
- 申请短信模板:AddSmsTemplate
- 删除短信模板:DeleteSmsTemplate
- 修改未通过审核的短信模板:ModifySmsTemplate
- 查询短信模板的审核状态:QuerySmsTemplate
sdk引用
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.16</version>
</dependency>
工程变量配置
yml:
aliyun:sms:access-key-id: 111111111111111111access-key-secret: 2222222222222222222222222sign-name: 云中科技
源码引用变量:
@Value("${aliyun.sms.access-key-id}")private String accessKeyId;@Value("${aliyun.sms.access-key-secret}")private String accessKeySecret;@Value("${aliyun.sms.sign-name}")private String signName;private String sysVersion = "2017-05-25";private String sysDomain = "dysmsapi.aliyuncs.com";
申请短信模板
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(sysDomain);request.setSysVersion(sysVersion);request.setSysAction("AddSmsTemplate");request.putQueryParameter("TemplateType", String.valueOf(defaultTemplateType));request.putQueryParameter("TemplateName", template.getTemplateName());request.putQueryParameter("TemplateContent", template.getTemplateContent());request.putQueryParameter("Remark", template.getRemark());CommonResponse response;try {response = client.getCommonResponse(request);} catch (Exception e) {logger.error(e.getLocalizedMessage(), e);throw new ApiException(e.getLocalizedMessage());}logger.info(response.getData());CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);if ("OK".equals(responseData.getCode())) {} else {logger.error(response.getData());}
返回结果:
@Getter
@Setter
public class CmsSmsResponse {private String Code;private String Message;private String RequestId;private String TemplateCode;
}
查询模板信息
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(sysDomain);request.setSysVersion(sysVersion);request.setSysAction("QuerySmsTemplate");request.putQueryParameter("TemplateCode", template.getTemplateCode());CommonResponse response;try {response = client.getCommonResponse(request);} catch (ClientException e) {logger.error(e.getLocalizedMessage(), e);throw new ApiException(e.getLocalizedMessage());}logger.info(response.getData());CmsSmsQueryResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsQueryResponse.class);if ("OK".equals(responseData.getCode())) {} else {logger.error(response.getData());}
返回结果:
@Getter
@Setter
public class CmsSmsResponse {private String Code;private String Message;private String RequestId;private String TemplateCode;
}
@Getter
@Setter
public class CmsSmsQueryResponse extends CmsSmsResponse {private String TemplateContent;private Integer TemplateStatus;private Integer TemplateType;private String TemplateName;private String CreateDate;private String Reason;}
更新审核未通过的模板
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(sysDomain);request.setSysVersion(sysVersion);request.setSysAction("ModifySmsTemplate");request.putQueryParameter("TemplateType", "2");request.putQueryParameter("TemplateName", template.getTemplateName());request.putQueryParameter("TemplateCode", template.getTemplateCode());request.putQueryParameter("TemplateContent", template.getTemplateContent());request.putQueryParameter("Remark", template.getRemark());CommonResponse response;try {response = client.getCommonResponse(request);} catch (ClientException e) {logger.error(e.getLocalizedMessage(), e);throw new ApiException(e.getLocalizedMessage());}logger.info(response.getData());CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);if ("OK".equals(responseData.getCode())) {} else {logger.error(response.getData());}
结果:
@Getter
@Setter
public class CmsSmsResponse {private String Code;private String Message;private String RequestId;private String TemplateCode;
}
删除模板
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(sysDomain);request.setSysVersion(sysVersion);request.setSysAction("DeleteSmsTemplate");request.putQueryParameter("TemplateCode", template.getTemplateCode());CommonResponse response;try {response = client.getCommonResponse(request);} catch (ClientException e) {logger.error(e.getLocalizedMessage(), e);throw new ApiException(e.getLocalizedMessage());}logger.info(response.getData());CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);if ("OK".equals(responseData.getCode())) {} else {logger.error(response.getData());}
结果:
@Getter
@Setter
public class CmsSmsResponse {private String Code;private String Message;private String RequestId;private String TemplateCode;
}
发送短信
- 发送短信:SendSms
批量发送需要限制大小200
List<String> phones = ...CmsSmsTemplate template = ...DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);int fromIndex = 0;int toIndex = phones.size() > batchCount ? batchCount : phones.size();while (fromIndex < phones.size()) {List<String> subPhoneList = phones.subList(fromIndex, toIndex);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain(sysDomain);request.setSysVersion(sysVersion);request.setSysAction("SendBatchSms");request.putQueryParameter("PhoneNumberJson", JSONUtil.toJsonStr(subPhoneList));List<String> signNames = Lists.newArrayList();for (int i = 0; i < subPhoneList.size(); i++) {signNames.add(signName);}request.putQueryParameter("SignNameJson", JSONUtil.toJsonStr(signNames));request.putQueryParameter("TemplateCode", template.getTemplateCode());CommonResponse response;try {response = client.getCommonResponse(request);} catch (ClientException e) {logger.error("failed to send message form {} to {}", fromIndex, toIndex);logger.error(e.getLocalizedMessage(), e);continue;}logger.info(response.getData());CmsSmsQueryResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsQueryResponse.class);if (!"OK".equals(responseData.getCode())) {logger.error("failed to send message form {} to {}", fromIndex, toIndex);logger.error(response.getData());} else {logger.info("success to send message form {} to {}", fromIndex, toIndex);}fromIndex += batchCount;toIndex += batchCount;toIndex = phones.size() > toIndex ? toIndex : phones.size();}
aliyun短信及短信模板操作相关推荐
- ThinkPHP6集成腾讯云、短信宝短信发送的工具类
composer安装 composer require mrwanghongda/sms-sdk 代码: use Mrwanghongda\SmsSdk\Sms\SmsFactory;/*** 短信宝 ...
- 阿里云短信服务——短信发送验证码
引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了:现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送:下面我以阿里云为例,演示一下如何短信发送验证码: ...
- [风一样的创作]二次封装阿里云短信 验证码 发送短信 查询短信 编辑短信
1.首先要注册阿里云,购买阿里云短信服务,拿到AccessKey ID和AccessKey Secret 链接: https://usercenter.console.aliyun.com/#/man ...
- 国际短信平台短信路由搭建后台软件定制-移讯云短信系统
国际短信平台短信路由搭建后台软件定制-移讯云短信系统 什么是短信路由 短信路由是指当短信发送时,不通的关键字内容,不同的地区进行线路分流.实现压缩成本速度和质量保证. 新的客户端客户登录后发送短信时可 ...
- 短信接口被恶意调用?企业短信防火墙+【中昱维信】短信验证码【Java】
短信接口被恶意调用?企业短信防火墙+[中昱维信]短信验证码[Java] 一.企业短信防火墙的实现 1.1 简介 1.2 第一步:获取防火墙帐号密钥 1.3 第二步:下载防火墙服务器 1.4 第三步:业 ...
- 短信接口防刷防轰炸解决方案Java接入教程- 企业短信防火墙+ 【中昱维信】短信验证码
企业短信防火墙[新昕科技]+短信验证码[中昱维信]Java应用实例 一.企业短信防火墙的实现 1.1 简介 1.2 第一步:获取防火墙帐号密钥 1.3 第二步:下载防火墙服务器 1.4 第三步:业务系 ...
- 联通一信通短信平台接口调用
联通一信通短信平台接口调用 起承转 准备工作 主要调用功能 发送短信 接收回复短信 起承转 业务需要调用联通一信通短信接口. 准备工作 调用接口前需要一系列准备工作,步骤如下: 企业账户相关信息,你需 ...
- [开源工具]2022/2023 分享好用的免费的云短信/临时短信[Temp Message]
[开源工具]2022/2023 分享好用的免费云短信/临时短信[Temp Message] 什么是免费云短信? 免费云短信的优点? 如何使用免费云短信? 国内免费: 国外免费: 为何我输入了虚拟号码却 ...
- NIUSHOP商城系统短信宝短信插件
配置方式: 一:本插件针对NIUSHOP商城程序开发,插件内的所有文件除Smsbao.php文件外,均为对原文件的修改,如果你的系统经过二次开发,安装本插件之前,请仔细核对修改. 二:把下载好的NIU ...
最新文章
- 算符优先文法,中缀式求值,栈的典型应用
- 这些焊接缺陷,你遇到过多少?
- python编程从入门到精通 叶维忠 pdf-叶维忠《Python编程从入门到精通》PDF
- POJ3114强连通+spfa
- React Native 红屏之Could not connect to development server.
- .xhr长轮询_使用Spring 3.2的DeferredResult进行长轮询
- Java程序员的典型工作过程有哪些_Java程序员都要经历哪些阶段
- go中make、new和直接var的区别
- JavaScript继承详解(二)
- C语言__LINE__实现原理
- 比postman好用10倍的接口调试工具ApiPost
- DNS Flood Detector让DNS更安全
- VBS以强制启用宏的方式打开EXCEL文件,无视用户设置
- 支付行业常见信息安全合规认证小记
- Oracle 11g 安装与彻底卸载
- 小程序 | 优惠券样式
- 《网络攻防》第七周学习总结
- vue3中Provide/Inject的使用
- OWA动态密码短信认证方案,解决outlook邮件双因子认证问题
- 大学四年如何有效的使用『牛客』平台