前言

短信验证码是通过发送验证码到手机的一种有效的验证码系统。主要用于验证用户手机的合法性及敏感操作的身份验证。
现在市面上的短信服务平台有很多。大家在选择的时候未免会有些不好抉择。本人建议选择短信服务商应遵循以下几点:
最近的一个项目中,注册和修改密码时需要用到短信验证码校验手机号的功能。本人也是对比几家后,直接选择阿里云通信的短信服务。(本身项目服务器也是部署在阿里云上,但之前并不知道阿里云有短信服务,早知道阿里有的话就不会浪费时间找其他平台了)。废话不多说,下面直接开始短信验证服务教程。
准备
1.登录阿里云,开通阿里云通信短信服务。
2.申请accessKey
选择右上角accessKeys,创建一个access key
3.进入控制台,申请短信签名。这个作用就是用于短信前面“【】”里面的名称。输入时不需要带“【】”
注意申请规范,要不然审核不会过。符合规范的话一般一个小时左右就能通过了。
我这里的签名是“喝酒不骑马”
4.申请短信模版
模板类型选择验证码。注意,选择验证码后,模板替代变量只支持验证码作为变量,且变量替换值<=6位数字或字母。
我的模板如下图
1.下载SDK包
https://help.aliyun.com/document_detail/55284.html
下载后,我们需要使用
aliyun-java-sdk-core-3.2.2.jar
aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar
aliyun-sdk-mns-1.1.8.jar
这三个包
SpringBoot + Maven下的jar包配置
1.在工程的resources目录下新建一个lib文件夹,将jar包复制进去。
2.由于maven库中没有上述几个jar包的依赖,所以需要将本地lib目录下的jar包导入到maven中。并在pom.xml文件中填下如下依赖。
<dependency>
<groupId>aliyun-message-sdk-core</groupId>
<artifactId>aliyun-message-sdk-core</artifactId>
<version>3.2.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aliyun-java-sdk-core-3.2.2.jar</systemPath>
</dependency>
<dependency>
<groupId>aliyun-message-sdk-mns</groupId>
<artifactId>aliyun-message-sdk-mns</artifactId>
<version>1.1.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aliyun-sdk-mns-1.1.8.jar</systemPath>
</dependency>
<dependency>
<groupId>aliyun-java-sdk-dysmsapi</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar</systemPath>
</dependency>
注意, <groupId>、<artifactId>、<version>随意填写。<scope>system</scope>必须要加,这表示导入本地的jar包。
${project.basedir}为项目的根路径。
建立AliyunMessageUtil工具类
public class AliyunMessageUtil {
private static final String product = "Dysmsapi";
//产品域名,开发者无需替换
private static final String domain = "dysmsapi.aliyuncs.com";
// 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
private static final String accessKeyId = "这里替换你的accessKeyId";
private static final String accessKeySecret = "这里替换你的accessKeySecret";
public static SendSmsResponse sendSms(Map<String, String> paramMap) throws com.aliyuncs.exceptions.ClientException {
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持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();
//必填:待发送手机号
request.setPhoneNumbers(paramMap.get("phoneNumber"));
//必填:短信签名-可在短信控制台中找到
request.setSignName(paramMap.get("msgSign"));
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode(paramMap.get("templateCode"));
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为$[code]"时,此处的值为
request.setTemplateParam(paramMap.get("jsonContent"));
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
// request.setSmsUpExtendCode(paramMap.get("extendCode"));
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
// request.setOutId(paramMap.get("outId"));
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
return sendSmsResponse;
}
}
sendSms(Map<String, String> paramMap)方法是我封装的方法。传入的参数是paramMap,其中包含以下属性:
phoneNumber:接受者手机号
msgSign:短信签名名称。在控制台的短信签名里能找到。
templateCode:短信模版的code。见控制台中的模版code。
jsonContent:需要替换的变量的JSON字符串。对于验证码来说,String jsonContent = "{\"number\":\"" + randomNum + "\"}";即可。其中randomNum是随机生成的6位验证码。
extendCode:上行短信模板的验证码,不需要的话可以忽略
outId:扩展字段,不需要则可以忽略
调用demo
public String sendMsg() throws LgdServiceException, ClientException {
String phoneNumber = "18888888888";
String randomNum = createRandomNum(6);
String jsonContent = "{\"number\":\"" + randomNum + "\"}";
Map<String, String> paramMap = new HashMap<>();
paramMap.put("phoneNumber", phoneNumber);
paramMap.put("msgSign", "喝酒不骑马");
paramMap.put("templateCode", "xxxxxxxx");
paramMap.put("jsonContent", jsonContent);
SendSmsResponse sendSmsResponse = AliyunMessageUtil.sendSms(paramMap);
if(!(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK"))) {
if(sendSmsResponse.getCode() == null) {
//这里可以抛出自定义异常
}
if(!sendSmsResponse.getCode().equals("OK")) {
//这里可以抛出自定义异常
}
}
}
/**
* 生成随机数
* @param num 位数
* @return
*/
public static String createRandomNum(int num){
String randomNumStr = "";
for(int i = 0; i < num;i ++){
int randomNum = (int)(Math.random() * 10);
randomNumStr += randomNum;
}
return randomNumStr;
}
总结
短信效果如图所示
对于验证码的校验,可参见我的另一篇博文SpringBoot实现短信验证码校验.
以上所述是小编给大家介绍的Springboot实现阿里云通信短信服务有关短信验证码的发送功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# spring
# boot
# 阿里云短信服务
# 短信验证码的发送
# SpringBoot发送短信验证码的实例
# SpringBoot发送html邮箱验证码功能
# SpringBoot使用榛子云实现手机短信发送验证码
# SpringBoot发送邮件功能 验证码5分钟过期
# SpringBoot使用邮箱发送验证码实现注册功能
# SpringBoot发送邮箱验证码功能
# SpringBoot+Security 发送短信验证码的实现
# SpringBoot实现发送验证码功能(图片验证码)
# 验证码
# 短信服务
# 抛出
# 必填
# 可在
# 自定义
# 可选
# 文档
# 不需
# 小编
# 度高
# 自己的
# 您的
# 几个
# 随机数
# 目录下
# 中找到
# 就能
# 在此
# 有很多
相关文章:
小型网站制作HTML,*游戏网站怎么搭建?
如何通过西部数码建站助手快速创建专业网站?
如何在香港服务器上快速搭建免备案网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
测试制作网站有哪些,测试性取向的权威测试或者网站?
,如何利用word制作宣传手册?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何通过网站建站时间优化SEO与用户体验?
网站制作模板下载什么软件,ppt模板免费下载网站?
公司网站设计制作厂家,怎么创建自己的一个网站?
北京网站制作网页,网站升级改版需要多久?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
制作宣传网站的软件,小红书可以宣传网站吗?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
网站代码制作软件有哪些,如何生成自己网站的代码?
建站主机选虚拟主机还是云服务器更好?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何快速搭建高效香港服务器网站?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
简单实现Android验证码
如何快速搭建高效简练网站?
常州自助建站工具推荐:低成本搭建与模板选择技巧
公众号网站制作网页,微信公众号怎么制作?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何零成本快速生成个人自助网站?
建站之星云端配置指南:模板选择与SEO优化一键生成
电商平台网站制作流程,电商网站如何制作?
如何在阿里云ECS服务器部署织梦CMS网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何注册花生壳免费域名并搭建个人网站?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何解决ASP生成WAP建站中文乱码问题?
网站制作员失业,怎样查看自己网站的注册者?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
MySQL查询结果复制到新表的方法(更新、插入)
定制建站流程解析:需求评估与SEO优化功能开发指南
中山网站推广排名,中山信息港登录入口?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
建站之星图片链接生成指南:自助建站与智能设计教程
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何选择高效可靠的多用户建站源码资源?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
利用JavaScript实现拖拽改变元素大小
*请认真填写需求信息,我们会在24小时内与您取得联系。