目的是用Java实现短信单发功能,可以是验证码或者短信通知,我这里使用阿里云短信服务。

开发前要做一些准备工作,首先注册一个阿里云账号,实名认证之类的就不细说了,然后看一下api文档,文档指引写的很清楚,先按照文档一步步操作到签名和模板创建完成,并设置访问权限,这样就可以拿到我们需要的几个参数(RAM用户id和key,签名、模板)了。

接下来看下代码,先打开 OpenAPI开发者门户体验一下如何调用,如下图,填上几个必要的参数(在前面的准备工作拿到,这里测试不用填RAM用户id和key),点击”发起调用“,成功发送短信就说明参数正确。可以看到在左边填上参数后,右边代码对应set参数,明白了怎么入参调用,我们开始来写自己的代码(其实就是搬运代码emmm)。

先引入sdk依赖,鼠标指到sdk依赖信息那里就可以看到依赖,把它复制到你的pom里。

再然后就是复制代码,做一些修改就可以了,下面是我的代码:

1.主要代码

package com.example.util;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.Random;/*** 短信服务** @author hlz*/
@Component
public class MessageUtil {/*** 阿里云RAM用户id*/@Value("${messageService.accessKeyId}")private String accessKeyId;/*** 阿里云RAM用户AccessKey*/@Value("${messageService.accessKeySecret}")private String accessKeySecret;/*** 短信模板code*/@Value("${messageService.templateCode1}")private String templateCode;/*** 短信签名名称*/@Value("${messageService.signName}")private String signName;/*** 使用AK&SK初始化账号Client* @param accessKeyId* @param accessKeySecret* @return Client* @throws Exception*/public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {Config config = new Config()// 您的AccessKey ID.setAccessKeyId(accessKeyId)// 您的AccessKey Secret.setAccessKeySecret(accessKeySecret);// 访问的域名config.endpoint = "dysmsapi.aliyuncs.com";return new Client(config);}/*** 短信单发** @param phoneNumber 电话号码* @param templateParam 短信模板变量对应值* @throws Exception*/public void sendVerifyCode(String phoneNumber, String templateParam) throws Exception {Client client = MessageUtil.createClient(accessKeyId, accessKeySecret);SendSmsRequest sendSmsRequest = new SendSmsRequest().setPhoneNumbers(phoneNumber).setSignName(signName).setTemplateCode(templateCode).setTemplateParam("{\"code\":"+templateParam+"}");// 复制代码运行请自行打印 API 的返回值client.sendSms(sendSmsRequest);}
}

2.写一个测试类调用

package com.example;import com.example.util.MessageUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class MyTest {@AutowiredMessageUtil messageUtil;@Testpublic void messageTest() throws Exception {messageUtil.sendVerifyCode("18178605372", "您的验证码为:8888");}
}

在application.yml 中配置参数:前面准备的RAM用户id和key在这用到

messageService:#阿里云RAM用户idaccessKeyId: 你创建RAM用户id#阿里云RAM用户AccessKeyaccessKeySecret: 你的RAM用户AccessKey#短信验证码模板1templateCode1: 你申请的模板code#短信签名signName: 你申请的签名

到此短信单发服务就完成了。

java实现短信通知、验证码相关推荐

  1. java登录的 验证码_java登录验证码

    一.创建web项目 二.生成验证码 创建VcodeObject.java,存储验证码与图片 package com.demo.vcode; import java.io.InputStream; pu ...

  2. java 生成校验验证码_java 验证码生成与校验

    java绘图相关类 验证码工具类 package dt2008.util; import javax.imageio.ImageIO; import javax.servlet.http.HttpSe ...

  3. Java发送邮箱验证码、session校验功能

    本篇主要描述"发送邮箱验证码.session校验"相关前(htmljs)后(java)台代码,业务逻辑示例,闲话少诉,直接上代码. 1.引入的jar包是mail-1.4.jar 2 ...

  4. java短信验证码实现_社交APP开发短信验证是通过什么技术实现

    我们已经习惯通过手机APP来解决我们生活中的一些问题,社交APP用来聊天交友,购物APP用来购买生活所需用品,游戏APP用来消遣娱乐,移动互联网行业正在飞速发展. 不难发现我们手机里面的各种APP都有 ...

  5. java实现滑动验证码

    功能:java实现滑动验证码 项目是采用springboot,maven 开发工具:采用idea 1.效果演示: 2.后端代码: 控制层: @Controller public class Slide ...

  6. java 验证码 字母_使用java生成字母验证码

    本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下 import java.awt.BasicStroke; import java.awt.Color; import j ...

  7. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    文章目录 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现) 1.打开腾讯云短信服务 2.创建短信签名 3.创建短信正文模板 4.等待全部审核完毕即可 5.发送短信 ...

  8. 关于java+selenium识别验证码的问题

    ---------## (关于java+selenium识别验证码的问题) hahahahahahahahahahahahahaha~The first time you write a blog, ...

  9. java ocr 验证码_Ocrking图片识别之Java实现本地验证码的识别 | 学步园

    本实例代码为Java实现本地验证码的识别 依赖库为 httpclient-4.2 使用最新的库 需要修改部分代码 Author: niostars@gmail.com //构造一个httpclient ...

  10. Ocrking图片识别之Java实现本地验证码的识别

    最近一个项目需要用到验证码的识别,网上找到了Ocrking的识别平台,就拿来使用一下.平台为Java一下是实现方式: 转载请写明出处: 本实例代码为Java实现本地验证码的识别 依赖库为 httpcl ...

最新文章

  1. 都优秀!两位硕士都发一作Nature,之后选择却截然不同!
  2. 第一个 Mybatis 程序(CURD操作)
  3. 倪光南:下一次科技革命集中在人工智能等三方面
  4. Fedora 26 将助力云、服务器、工作站系统
  5. 猎八哥浅谈存储过程——数据库中的双刃剑
  6. undefined reference to `libiconv_open 无法编译PHP
  7. SAP 与 JSON 接口实施案例一
  8. 网易2019实习生Java编程题
  9. 26、jdbc操作数据库(3)
  10. python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置
  11. 前端学习(1857)vue之电商管理系统电商系统之登录过程和token
  12. C++ bitset类
  13. AOP Error creating bean with name ‘myCaculator‘ defined in file [XXX]
  14. Spring Security HttpSecurity.formLogin
  15. MapGuide Open Source 2.2发布
  16. stm32学习笔记——电容触摸按键的实现
  17. excel两列数据对比找不同_对比excel,轻松学习python数据分析
  18. 解读随着教育改革的深入steam教育
  19. 【文献阅读】Cost-Sensitive Portfolio Selection via Deep Reinforcement Learning
  20. 国内高校大数据教研机构调研报告

热门文章

  1. 亚马逊美国站审核便携式火炉逊、户外烧烤架ASTM F3363测试项目
  2. 中国家电市场深度调查研究报告
  3. 【程序员如何买基金 四】个人投资诊断和基金诊断
  4. 流程:论文发表的流程
  5. 3d公式算法计算机,最新3d万能计算定胆公式来了
  6. 多网卡时如何使用源地址ping目的地址,检测网络连通性。
  7. 模块二、添加Customer 类
  8. 树莓派+欧西亚室外温度湿度传感器+Arduino Nano+433Mhz接收模块+RRDTOOL制作室内室外温湿度记录监控系统
  9. 10个切片动作过渡PR预设
  10. 7-11 家庭房产 (25 point(s))