实现短信发送业务

准备工作

阿里云短信服务: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实现短信发送相关推荐

  1. JAVA + 阿里云 实现单个短信发送 和 批量短信发送(直接拷贝就能使用)

    JAVA + 阿里云 实现单个短信发送 和 批量短信发送 一.阿里云官网相关操作 1.1 秘钥获取 1.2 签名申请 在短信服务中,找到国内消息-签名管理-添加签名, 并等待签名审核通过 1.2 模板 ...

  2. 阿里云接口实现短信发送java版

    阿里云接口实现短信发送java版 1. 前期准备 1.1.开通阿里云短信服务 1.2.申请签名管理和模板管理 1.3.获取Access_key和Access_secret 2.代码部分 2.1.在po ...

  3. django框架中嵌入容联云sdk实现短信发送接口

    1.注册容联云账号,主要是为了获取如下参数 添加测试手机号 2.关于sdk和用法可参考Demo示例,demo下载在最上面Demo下载 3.在自己的项目中导入需用到的模块 4.更改配置为自己申请的应用配 ...

  4. 使用阿里云提供的短信服务发送短信(个人版)

    本人最近需要实现一个注册发短信验证码的功能,找了几家短信服务平台,如腾讯云,云片网等,发现他们都没有提供给用户个人的短信服务权限,申请短信签名等都需要有企业等相关证明,最后找到了阿里云的短信服务平台, ...

  5. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

  6. 基于阿里云的手机短信验证码和注册校验逻辑

    基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...

  7. 基于阿里云平台的短信验证码服务API的使用

    基于阿里云平台的短信验证码服务API的使用 第一步:登录阿里云平台 第二步:申请国内文本短信签名 如果是个人作业项目(如作者的签名),可以直接申请测试和学习用的测试签名,该签名的缺点是必须绑定测试手机 ...

  8. 创蓝253云通讯 paas 短信发送接口和定义说明

    一.demo: #include <arpa/inet.h> #include <assert.h> #include <errno.h> #include < ...

  9. 阿里和云之讯短信发送服务

    目录 1 云之讯短信验证码 1.1 创建应用 1.2 创建短信模板 1.3 发送短信api 1.4 编写代码 1.5 编写测试用例 1.6 编写接口服务 2 阿里云短信服务 2.1 申请签名与模板 2 ...

  10. 阿里云——OpenAPI使用——短信服务

    目录 前言 产品位置 短信服务 API发送测试 控制台发送测试 链接地址: 阿里云 OpenAPI 开发者门户 前言 公司一直没用这个,最近搞Eolink的时候看到OpenAPI,为了测试,我就搞一下 ...

最新文章

  1. Bitcoin Cash 交易签名与构造
  2. 3月31日华为鸿蒙,华为鸿蒙OS Beta 3将从3月31日起推送
  3. el-table中每列设置同样的宽度导致表格宽度没法实现100%布局
  4. php的ajax实例
  5. eclipse在Windows7 64 位下出现Unhandled event loop exception No more handles
  6. 在Blazor中构建数据库应用程序——第2部分——服务——构建CRUD数据层
  7. php 数据映射,数据映射模式(Data Mapper)
  8. lua mysql发包_如何发包
  9. Lvs+Keepalived高可用负载均衡配置
  10. oracle监听怎么关闭,Oracle数据库启动监听、关闭
  11. 国内外优秀的源码网站
  12. Centos-6.3-x86_64 minimal 迷你版安装笔记 - Java篇
  13. C++单例模式--线程安全
  14. win10命令行压缩/解压缩文件
  15. origin2021绘图软件安装教程
  16. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
  17. sublime license key
  18. 广义相对论 狭义相对论 双生子
  19. 最新软件外包网站有哪些?
  20. Mybatis错误 Result Maps collection already contains value for xxx

热门文章

  1. CPDA项目数据分析师和CDA数据分析师有什么区别?
  2. 智鹰科技——无人机线路巡检系统商业计划书
  3. PHP常用函数性能对比
  4. 如何使用ShoeBox和PhotoShop制作出漂亮的Fnt字体
  5. 随机字符 php,PHP生成随机字符
  6. Lua云验证卡密破解工具
  7. 理工科硕士自学ICEM网格划分的思考和感悟
  8. eeglab和matlab,Matlab之EEGLAB工具箱脑电数据预处理
  9. win7连接共享打印机时安装驱动程序出现0x00000bcb错误【解决办法】
  10. 场景应用:100亿的数据你怎么排序