Java对接阿里云短信服务保姆级教程(新手秒会)

 更新时间:2024年12月23日 09:55:03   作者:周小伦_  
这篇文章主要介绍了如何在阿里云上申请短信服务以及如何使用Java代码进行对接,包括申请资质、签名和模板,以及编写Java代码整合成工具类进行调用的步骤,需要的朋友可以参考下

一,阿里云部分

登录阿里云搜索短信服务进入控制台,进行下面五个步骤的申请(默认已开通服务)

1. 申请资质

资质是申请签名的实名化信息,需要提供企业的信息和个人信息

2. 申请签名

签名就是短信的标题,如下图中的【飞书】

要注意,每个带星号的参数都要慎重填写,注意关键信息节点(这里踩过坑,由于填信息不仔细,审核不通过很耽误时间) 

3. 申请模版

模板就是短信的内容,如下图

至此,阿里云方面的准备工作算是基本完成了!

注:

  • 短信服务已开通,套餐要有余量
  • 签名要配置好
  • 签名对应的模板配好
  • 接下来是写Java 来对接

二,Java 代码部分

  • 可以点击此链接进入短信接入的文档 点击调试可以生成示例代码(如下图)

    必填参数

    注:

  • 上面生成的代码太乱,可以使用我下面的代码,整合成短信工具类,将需要的信息改为自己的即可

  • 导入依赖

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>3.0.0</version>
        </dependency>
        
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.0</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>2.1.0</version>
        </dependency>
  • 工具类
public class SmsUtil {

    private static final String ACCESS_KEY_ID = "";//AccessKey自己账号的
    private static final String ACCESS_KEY_SECRET = "";
    private static final String ENDPOINT = "dysmsapi.aliyuncs.com";//固定死
    private static final String SIGNNAME = "";//签名名称
    private static final String TCODE = "";//模版的编号

    public static String  sendSms(String phoneNumbers) throws Exception {

        String code=generateVerificationCode();

        Config config = new Config()
                .setAccessKeyId(ACCESS_KEY_ID)
                .setAccessKeySecret(ACCESS_KEY_SECRET)
                .setEndpoint(ENDPOINT);

        Client client = new Client(config);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setPhoneNumbers(phoneNumbers)
                .setSignName(SIGNNAME)
                .setTemplateCode(TCODE)
                //此处是设计模版的时候预留的变量$[code]就验证码,用下面的随机生成4位数字传入
                .setTemplateParam(String.format("{\"code\":\"%s\"}", code));

        try {
            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
            return code;
        } catch (TeaException error) {
            return "失败";
        }
    }

    /**
     * 验证码随机四位
     */
    private static String generateVerificationCode() {
        // 生成四位数字验证码
        Random random = new Random();
        int code = random.nextInt(10000); // 随机生成 0 到 9999 的整数
        return String.format("%04d", code); // 保证生成的是四位数字,不足四位时前面补0
    }
}
  • controller调用
    /**
     * 发送短信
     * @param phone
     * @return
     */
    @RequestMapping("sendCode")
    public ResultVO sendMessage(@RequestParam String phone){
        try {
            String code = SmsUtil.sendSms(phone);
            //使用redis 存起来,过期时间300秒,用于登录时拿出来验证
            redisTemplate.opsForValue().set("yzm"+phone,code,300, TimeUnit.SECONDS);

            return ResultUtil.success("验证码发送成功");
        } catch (Exception e) {
            return ResultUtil.error("验证码发送失败");
        }
    }

完结!!!

总结

到此这篇关于Java对接阿里云短信服务保姆级教程的文章就介绍到这了,更多相关Java对接阿里云短信服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中的@Transactional注解使用详解

    Spring中的@Transactional注解使用详解

    这篇文章主要介绍了Spring中的@Transactional注解使用详解,@Transactional 是一个注解,用于在 Spring 框架中管理事务的声明式事务管理机制,它可以应用于方法或类级别,并指示方法或类在执行时应该被包装在一个事务中,需要的朋友可以参考下
    2024-01-01
  • 关于json序列化(javaBean转Json的细节处理)

    关于json序列化(javaBean转Json的细节处理)

    这篇文章主要介绍了关于json序列化(javaBean转Json的细节处理),具有很好的参考价值,希望对大家有所帮助。
    2022-03-03
  • 实例详解SpringMVC入门使用

    实例详解SpringMVC入门使用

    大家好,本篇文章主要讲的是实例详解SpringMVC入门使用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • idea中写sql语句没有提示字段的问题

    idea中写sql语句没有提示字段的问题

    在IDEA中编写SQL时如果没有字段提示,通常是因为没有设置注入语言,解决方法是通过快捷键Alt+Enter选择“注入语言或引用”,然后选择相应的数据库(如MySQL),之后重新输入SQL语句即可,此方法可以有效解决IDEA中SQL语句提示问题,提高开发效率
    2024-09-09
  • 全网最全最细的jmeter接口测试教程以及接口测试流程(入门教程)

    全网最全最细的jmeter接口测试教程以及接口测试流程(入门教程)

    本文主要介绍了全网最全最细的jmeter接口测试教程以及接口测试流程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • java实现飞机大战小游戏

    java实现飞机大战小游戏

    这篇文章主要为大家详细介绍了java实现飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • SpringBoot项目中Date类型数据在接口返回的时间不正确的问题解决

    SpringBoot项目中Date类型数据在接口返回的时间不正确的问题解决

    如果接口返回的Date类型时间与数据库中datetime不一致,可能是由于没有正确配置时区导致的,解决方法是在yaml配置文件中指定正确的日期格式和时区配置,修改配置并重启项目后,可以获得正确的时间,下面就来介绍一下
    2024-09-09
  • java编译后的文件出现xx$1.class的原因及解决方式

    java编译后的文件出现xx$1.class的原因及解决方式

    这篇文章主要介绍了java编译后的文件出现xx$1.class的原因及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • java数据结构循环队列的空满判断及长度计算

    java数据结构循环队列的空满判断及长度计算

    这篇文章主要为大家介绍了java数据结构循环队列的空满判断及长度计算,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • SpringBoot thymeleaf eclipse热部署方案操作步骤

    SpringBoot thymeleaf eclipse热部署方案操作步骤

    今天小编就为大家分享一篇关于SpringBoot thymeleaf eclipse热部署方案操作步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论