今天回头研究阿里云短信接口的时候花费了一点时间,网上的教程不太清楚,特意记录一下

首先进行一下准备工作
此处是为了拿到SMSutil里面必要的
accessKeyId以及accessKeySecret

在主页找到AccessKey点击进入

下一步进行模板管理

此处如果有多个参数,代码中必须要给同样的参数

申请通过后就可以进行发送测试


import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;import java.util.Random;/*** 短信发送工具类*/
public class SMSUtils {/*** 发送短信* @param phoneNumbers* @param* @throws ClientException*/public static void sendShortMessage(String phoneNumbers) throws ClientException{// 设置超时时间-可自行调整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产品域名(接口地址固定,无需修改)// 替换成你的AKfinal String accessKeyId = "xxxxxxxxxxxxx";// 你的accessKeyIdfinal String accessKeySecret = "xxxxxxxxxxxx";// 你的accessKeySecret// 初始化ascClient,暂时不支持多region(请勿修改)IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象SendSmsRequest request = new SendSmsRequest();// 使用post提交request.setMethod(MethodType.POST);// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式request.setPhoneNumbers(phoneNumbers);// 必填:短信签名-可在短信控制台中找到request.setSignName("");// 必填:短信模板-可在短信控制台中找到request.setTemplateCode("");// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为// 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败request.setTemplateParam("{\"code\":\""+getMsgCode()+"\"}");// 可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)// request.setSmsUpExtendCode("90997");// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者// request.setOutId("yourOutId");// 请求失败这里会抛ClientException异常SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {// 请求成功System.out.println("请求成功");}}//此处为随意生成六位验证码private static String getMsgCode() {int n = 6;StringBuilder code = new StringBuilder();Random ran = new Random();for (int i = 0; i < n; i++) {code.append(Integer.valueOf(ran.nextInt(10)).toString());}return code.toString();}
}

Controller层

package com.spirit.controller.v1;import com.spirit.service.userViewService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/SMS")
public class SMSController {@AutowireduserViewService userViewService;@RequestMapping("/smsverification")public Object SmsVerification(@Param("phoneNumbers") String phoneNumbers) {return userViewService.SmsVerification(phoneNumbers);}}

Service层

package com.spirit.service;import java.util.Map;public interface userViewService {public Map<String, Object> SmsVerification(String phoneNumbers);
}

ServiceImpl

package com.spirit.service.Impl;import com.aliyuncs.exceptions.ClientException;
import com.spirit.common.config.SMSUtils;
import com.spirit.service.userViewService;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.Map;
@Service
public class userViewServiceImpl implements userViewService {@Overridepublic Map<String, Object> SmsVerification(String phoneNumbers) {Map<String, Object> map = new HashMap<>();try {SMSUtils.sendShortMessage(phoneNumbers);map.put("code", 200);map.put("msg", "短信验证发送成功");return map;} catch (ClientException e) {map.put("code", 300);map.put("msg", e.getMessage());return map;}}
}

然后Debug进行测试

测试结果:


测试成功

借鉴文章:https://blog.csdn.net/qq_37345604/article/details/102727904?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161779666516780261983609%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161779666516780261983609&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-102727904.first_rank_v2_pc_rank_v29&utm_term=%E9%98%BF%E9%87%8C%E4%BA%91%E7%9F%AD%E4%BF%A1%E6%8E%A5%E5%8F%A3&spm=1018.2226.3001.4187

短信发送6位验证码测试相关推荐

  1. 【瑞吉外卖】day08:短信发送、手机验证码登录

    目录 4. 短信发送​编辑 4.1 短信服务介绍 4.2 阿里云短信服务介绍 4.3 阿里云短信服务准备 4.4 代码开发 5. 手机验证码登录 5.1 需求分析 5.2 数据模型 5.3 前端页面分 ...

  2. SpringBoot——短信发送、手机验证码登录

    目录 一.短信发送 1.1 阿里云短信服务 1.1.1 设置短信签名 1.1.2 模板管理 1.1.3 设置AccessKey 1.2 短信发送--代码开发 1.2.1 导入maven坐标 1.2.2 ...

  3. 阿里云短信服务——短信发送验证码

    引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了:现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送:下面我以阿里云为例,演示一下如何短信发送验证码: ...

  4. PHP 手机短信发送验证码

    点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 本篇设计的知识点有点多,我会分类将,同学们可 ...

  5. 图片验证码、阿里云短信发送和验证的逻辑

    图片验证码的生成 1.django 缓存设置 1.1 安装Django缓存模块 pip install django-redis==4.12.1 1.2 syl/settings.py中配置缓存 # ...

  6. jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

    文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板  阿里云短信发送验证码配置和项目使用 je ...

  7. 短信发送验证码实现验证

    写在前面   你们好,我是小庄.很高兴能和你们一起学习短信发送功能.如果您对Java感兴趣的话可关注我的动态.   写博文是一种习惯,在这过程中能够梳理和巩固知识点. 实现思路:前台将手机号码发送到后 ...

  8. 【转载】C语言,利用网络短信验证码接口实现手机短信发送

    利用网络短信验证码接口实现手机短信发送 (历史代码,贴出学习) resource.h //resource.h//{{NO_DEPENDENCIES}} // Microsoft Visual C++ ...

  9. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

最新文章

  1. 亚马逊千人评分4.6分,用小说的方式解锁开发难题!
  2. 架构师之道:面向组件的Web架构设计
  3. rot90--矩阵旋转
  4. 第K极值(Tyvj)
  5. 机器学习(三)聚类深度讲解
  6. 内存监控及报警shell脚本
  7. R 语言 相关入门资料
  8. 【QGIS入门实战精品教程】3.3:QGIS如何打开ArcGIS创建的文件数据库(GDB)?
  9. vue怎么通过if跳出方法_vue多种弹框的弹出形式
  10. Hadoop中的Streaming(20)
  11. java collection 常用类_分析Collection常用的实现类
  12. 基于netty框架的socket长连接负载均衡解决方案
  13. 29.yii2 RBAC
  14. C语言-----职工信息管理系统
  15. 换IP软件如何使用,一起来看下换IP软件的使用教程
  16. 浅谈逻辑漏洞:越权漏洞、密码找回漏洞、支付逻辑漏洞、指定账户恶意攻击、登录体系安全、业务一致性安全、业务数据篡改、验证码突破、数据重放安全
  17. Python 识别图片中表格
  18. html文字发亮_CSS3字体发光效果
  19. html5三国策略,HTML5新游《乱弹三国》今日首曝
  20. 自动化C语言第一次月考试卷,c语言程序设计第一次月考试题

热门文章

  1. (62)TCL脚本命令【format】
  2. 丹阳市车床 互联网上可能保持爱好运行 持稳观
  3. Android仿网易云音乐:留声机效果
  4. 追女孩要用到的短信24条
  5. 如何画线得到股票中的压力点和支撑点
  6. 香港 三星 android6.0,三星NOTE5 N9200 港版 国行版 6.0.1 官超精简
  7. 【拆解】一款可视空气炸锅,顺便分析下内部的电路
  8. 2007大盘点之十大史上最牛(不是一般的牛X!)
  9. EM最大期望 似然与贝叶斯
  10. win10系统魔兽世界无法连接服务器地址,win10系统无法更新魔兽世界提示正在等待另一项安...