阿里云SDK实现短信发送
实现短信发送业务
准备工作
阿里云短信服务:AccessKey相关信息:短信模板/短信签名/AccessKeyId/AccessKeySecret
1、申请短信模板,获取code
2、申请短信签名
注:一般是签名先于模板申请,审批成功概率大
3、申请ak信息
阿里云地址:获取AccessKey - 新手上云指南 - 阿里云
配置文件(application.properties)
#SMS
aliyun.sms.accessKeyId=申请的accessKeyId
aliyun.sms.accessKeySecret=申请的accessKeySecret
aliyun.sms.endpoint=dysmsapi.aliyuncs.com//默认值,无需修改
aliyun.sms.verifySMS=短信模板code
aliyun.sms.noticeSMS=短信模板code
封装实体类
@Component
@PropertySource("classpath:application.properties") //默认路径下可不加
@Data
@Configuration
public class AliyunConfig {// sms@Value("${aliyun.sms.endpoint}")private String endpointSMS;@Value("${aliyun.sms.accessKeyId}")private String accessKeyIdSMS;@Value("${aliyun.sms.accessKeySecret}")private String accessKeySecretSMS;@Value("${aliyun.sms.verifySMS}")private String verifySMS;@Value("${aliyun.sms.noticeSMS}")private String noticeSMS;public AliyunConfig() {}public String getAccessKeyIdSMS() {return accessKeyIdSMS;}public void setAccessKeyIdSMS(String accessKeyIdSMS) {this.accessKeyIdSMS = accessKeyIdSMS;}public String getAccessKeySecretSMS() {return accessKeySecretSMS;}public void setAccessKeySecretSMS(String accessKeySecretSMS) {this.accessKeySecretSMS = accessKeySecretSMS;}public String getEndpointSMS() {return endpointSMS;}public void setEndpointSMS(String endpointSMS) {this.endpointSMS = endpointSMS;}public String getVerifySMS() {return verifySMS;}public void setVerifySMS(String verifySMS) {this.verifySMS = verifySMS;}public String getNoticeSMS() {return noticeSMS;}public void setNoticeSMS(String noticeSMS) {this.noticeSMS = noticeSMS;}
}
封装实体类
public class sendSMSUtil {//生成六位数随机验证码public String getRandom(){String randNum = new Random().nextInt(1000000)+"";System.out.println("生成"+randNum);if(randNum.length()!=6){ //如果生成的不是6位数随机数则返回该方法继续生成return getRandom();}else{return randNum;}}//创建客户端,将ak相关信息传入值config中public static Client createClient(AliyunConfig aliyunConfig) throws Exception {Config config = new Config()// 您的AccessKey ID.setAccessKeyId(aliyunConfig.getAccessKeyIdSMS())// 您的AccessKey Secret.setAccessKeySecret(aliyunConfig.getAccessKeySecretSMS());// 访问的域名config.endpoint = aliyunConfig.getEndpointSMS();return new Client(config);}//验证码发送方法public Result verifySMS(String uphone, AliyunConfig aliyunConfig) throws Exception {Result result = new Result();JSONObject json = new JSONObject();//设置处理时间为1秒,单位为毫秒System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//创建发送客户端Client client = createClient(aliyunConfig);
//生成六位随机验证码String code = getRandom();SendSmsRequest sendSmsRequest = new SendSmsRequest()
//设置手机号.setPhoneNumbers(uphone)
//设置签名.setSignName("你的签名")
//获取申请的验证码模板id.setTemplateCode(aliyunConfig.getVerifySMS())
//传入验证码模板的code值.setTemplateParam("{\"code\": \""+code+"\"}");
//获得发送的返回SendSmsResponse response = client.sendSms(sendSmsRequest);
//输出查看返回状态System.out.println(response.getBody().getCode());
//判断发送情况是否成功if(response.getBody().getCode().equals("OK")){json.put("verifyCode",code);return Result.succ("发送成功",json);}else if(response.getBody().getCode().equals("isv.BUSINESS_LIMIT_CONTROL")){
//短信发送出现频繁请求 return Result.fail("请勿频繁请求");}else{
//其他情况,通过自定义异常抛出throw new resultException(ResultEnum.MISTAKE_BY_SENDSMS);}
}
调试时出现isp.RAM_PERMISSION_DENY报错
该错误意味着RAM权限不足,前往阿里云开启相关权限
前往并开启以下两个权限即可进行短信发送操作
阿里云短信api返回码
返回码地址:API错误码 - 短信服务 - 阿里云
依赖支持:
<!-- 阿里云短信依赖支持 -->
<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-core</artifactId><version>4.5.16</version>
</dependency>
<!-- openapi依赖支持 版本20170525 -->
<dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.4</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.0.19</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>tea-console</artifactId><version>0.0.1</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>darabonba-env</artifactId><version>0.1.1</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>tea-util</artifactId><version>0.2.11</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>darabonba-time</artifactId><version>0.0.1</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>darabonba-string</artifactId><version>0.0.3</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>tea</artifactId><version>[1.0.3, 2.0.0)</version>
</dependency>
注:依赖版本要确保正确,依赖版本不对等可能出现如下错误
阿里云SDK实现短信发送相关推荐
- JAVA + 阿里云 实现单个短信发送 和 批量短信发送(直接拷贝就能使用)
JAVA + 阿里云 实现单个短信发送 和 批量短信发送 一.阿里云官网相关操作 1.1 秘钥获取 1.2 签名申请 在短信服务中,找到国内消息-签名管理-添加签名, 并等待签名审核通过 1.2 模板 ...
- 阿里云接口实现短信发送java版
阿里云接口实现短信发送java版 1. 前期准备 1.1.开通阿里云短信服务 1.2.申请签名管理和模板管理 1.3.获取Access_key和Access_secret 2.代码部分 2.1.在po ...
- django框架中嵌入容联云sdk实现短信发送接口
1.注册容联云账号,主要是为了获取如下参数 添加测试手机号 2.关于sdk和用法可参考Demo示例,demo下载在最上面Demo下载 3.在自己的项目中导入需用到的模块 4.更改配置为自己申请的应用配 ...
- 使用阿里云提供的短信服务发送短信(个人版)
本人最近需要实现一个注册发短信验证码的功能,找了几家短信服务平台,如腾讯云,云片网等,发现他们都没有提供给用户个人的短信服务权限,申请短信签名等都需要有企业等相关证明,最后找到了阿里云的短信服务平台, ...
- 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)
一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...
- 基于阿里云的手机短信验证码和注册校验逻辑
基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...
- 基于阿里云平台的短信验证码服务API的使用
基于阿里云平台的短信验证码服务API的使用 第一步:登录阿里云平台 第二步:申请国内文本短信签名 如果是个人作业项目(如作者的签名),可以直接申请测试和学习用的测试签名,该签名的缺点是必须绑定测试手机 ...
- 创蓝253云通讯 paas 短信发送接口和定义说明
一.demo: #include <arpa/inet.h> #include <assert.h> #include <errno.h> #include < ...
- 阿里和云之讯短信发送服务
目录 1 云之讯短信验证码 1.1 创建应用 1.2 创建短信模板 1.3 发送短信api 1.4 编写代码 1.5 编写测试用例 1.6 编写接口服务 2 阿里云短信服务 2.1 申请签名与模板 2 ...
- 阿里云——OpenAPI使用——短信服务
目录 前言 产品位置 短信服务 API发送测试 控制台发送测试 链接地址: 阿里云 OpenAPI 开发者门户 前言 公司一直没用这个,最近搞Eolink的时候看到OpenAPI,为了测试,我就搞一下 ...
最新文章
- Bitcoin Cash 交易签名与构造
- 3月31日华为鸿蒙,华为鸿蒙OS Beta 3将从3月31日起推送
- el-table中每列设置同样的宽度导致表格宽度没法实现100%布局
- php的ajax实例
- eclipse在Windows7 64 位下出现Unhandled event loop exception No more handles
- 在Blazor中构建数据库应用程序——第2部分——服务——构建CRUD数据层
- php 数据映射,数据映射模式(Data Mapper)
- lua mysql发包_如何发包
- Lvs+Keepalived高可用负载均衡配置
- oracle监听怎么关闭,Oracle数据库启动监听、关闭
- 国内外优秀的源码网站
- Centos-6.3-x86_64 minimal 迷你版安装笔记 - Java篇
- C++单例模式--线程安全
- win10命令行压缩/解压缩文件
- origin2021绘图软件安装教程
- 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
- sublime license key
- 广义相对论 狭义相对论 双生子
- 最新软件外包网站有哪些?
- Mybatis错误 Result Maps collection already contains value for xxx