SpringBoot集成阿里云短信服务———发送手机验证码

首先,这个是绝对可以实现的,后面也会附上完整的源码。

1。首先打开阿里云短信服务

阿里云短信服务地址

看到下面图示的两个箭头所指的位置获取四个信息
在这里插入图片描述
1.1 首先点击AccessKey,获得下面箭头所指的信息
在这里插入图片描述
1.2 然后点击添加签名和添加模板,按提示输入信息

注意一定要按规范填写,不然很容易不通过,我审核了三次,每次2小时。不要填太广泛的签名。
在这里插入图片描述
在这里插入图片描述
签名和模板分别代表:老黄JAVA个人博客和信息主体
在这里插入图片描述
到这里基本工作就已经做好了,下面上代码

2.代码

2.1 添加依赖

 <!--短信发送  start-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-codec</artifactId>
                    <groupId>commons-codec</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>activation</artifactId>
                    <groupId>javax.activation</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>1.1.0</version>
        </dependency>
 <!--end-->

2.2 前端

<form action="/sendCode" method="post">
        电话:<input type="text" name="phone"/>
        <input type="submit" value="发送验证码"/>
        <p th:text="${msg}"></p>
  </form>

2.3 控制器

//发送短信
@RequestMapping(value = "/sendCode")
public Object sendCode(Model m , String phone){
    try{
        SendMessageService.sendSms(phone);
    }catch (Exception e){
        m.addAttribute("msg","发送失败");
    }
    return "userRegister";
}

2.4 随机生成验证码类

   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();
    }

2.5 发送短信核心类

将上面生成的四个信息填入下面用******标记的部分

//阿里云短信接口配置类
public class SendMessageService {
    /* 短信API产品名称(短信产品名固定,无需修改) */
    private static final String product = "Dysmsapi";

    /* 短信API产品域名,接口地址固定,无需修改 */
    private static final String domain = "dysmsapi.aliyuncs.com";

    /* 此处需要替换成开发者自己的accessKeyId和accessKeySecret(在阿里云访问控制台寻找) */
    private static final String accessKeyId = "******"; //TODO: 这里要写成你自己生成的
    private static final String accessKeySecret = "********";//TODO: 这里要写成你自己生成的

    /* 短信发送 */
    public static SendSmsResponse sendSms(String phone) throws 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(phone);
        /* 必填:短信签名-可在短信控制台中找到 */
        request.setSignName("********"); //TODO: 这里是你短信签名
        /* 必填:短信模板code-可在短信控制台中找到 */
        request.setTemplateCode("********"); //TODO: 这里是你的模板code
        /* 可选:模板中的变量替换JSON串,如模板内容为"亲爱的用户,您的验证码为${code}"时,此处的值为 */
        request.setTemplateParam("{\"code\":\"" + getMsgCode() + "\"}");

        System.out.println("给电话为"+phone+"发送的验证码为:"+getMsgCode());

        // hint 此处可能会抛出异常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
        if(sendSmsResponse.getCode()!= null && sendSmsResponse.getCode().equals("OK")){
            System.out.println("短信发送成功!验证码:" + getMsgCode());
        }else {
            System.out.println("短信发送失败!");
        }
        return sendSmsResponse;
    }

前端输入电话号码,点击发送,就行了。如果控制台出现短信发送失败,可以是由于账户没钱的缘故,也可以先进行模拟,在阿里云中进行测试短信发送。

地址
在这里插入图片描述
通过填入上面通过的签名和模板便可以进行测试,如果发送失败,会出现错误类型和详细的错误原因。

如果想要查看其他语言的Api ,点击查看API Demo就行了
在这里插入图片描述
3.代码地址:http://download.csdn.net/download/m0_45025658/12252399

发布了33 篇原创文章 · 获赞 1 · 访问量 2042

猜你喜欢

转载自blog.csdn.net/m0_45025658/article/details/104910184