Springboot实现Java阿里短信发送代码实例

yizhihongxing

Springboot实现Java阿里短信发送代码实例

简介

阿里云短信服务提供了短信发送、查询等功能,便于企业进行验证码、营销等短信业务。本文将以Springboot为基础,讲解如何使用Java SDK来实现阿里短信服务。

准备工作

在使用阿里短信服务之前,需要先进行以下准备工作:

  • 在阿里云控制台中开通短信服务并获取Access Key ID和Access Key Secret。
  • 引入aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi依赖,可以通过Maven中央仓库获取。
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.0.0</version>
</dependency>

发送短信

在发送短信的代码中,需要构造初始化的DefaultAcsClient对象,设置Access Key ID和Access Key Secret。然后通过CreateSmsRequest对象设置短信模板、签名、手机号等参数,最后调用sendSms方法发送短信。

以下是使用阿里云大于短信模板发送短信的示例代码:

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.CreateSmsRequest;
import com.aliyun.teaopenapi.models.Config;
import java.util.*;


public class SmsUtil{
    public static void sendSms(String phone,String templateCode,String signName,String param){
        Config config = new Config()
                .setAccessKeyId("your-access-key-id")
                .setAccessKeySecret("your-access-key-secret");
        config.endpoint = "dysmsapi.aliyuncs.com";
        Client client = new Client(config);
        CreateSmsRequest createSmsRequest = new CreateSmsRequest()
                .setPhoneNumbers(phone)
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setTemplateParam("{'code':'" + param + "'}");
        client.createSms(createSmsRequest);
    }
}

多条示例说明

示例一:发送短信验证码

在发送短信验证码的代码中,需要使用阿里云短信服务提供的模板,设置验证码等参数。以下是使用Springboot实现发送短信验证码的示例代码:

import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Random;

@Service
public class SmsService {
    @Resource
    private SmsConfig smsConfig;

    public void sendVerificationCodeSms(String phone) {
        DefaultProfile profile = DefaultProfile.getProfile(
                smsConfig.getRegionId(),
                smsConfig.getAccessKeyId(),
                smsConfig.getAccessKeySecret());
        IAcsClient client = new DefaultAcsClient(profile);
        String code = String.valueOf(new Random().nextInt(899999) + 100000);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        // 需要填写阿里云短信模板编码和短信签名
        request.setDomain(smsConfig.getDomain());
        request.setVersion(smsConfig.getVersion());
        request.setAction(smsConfig.getActionSendSms());
        request.putQueryParameter("RegionId", smsConfig.getRegionId());
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", smsConfig.getSignName());
        request.putQueryParameter("TemplateCode", smsConfig.getTemplateCode());
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", code);
        request.putQueryParameter("TemplateParam", jsonObject.toJSONString());
        try {
            // 发送短信
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在以上示例代码中,需要在配置文件中设置以下参数:

aliyun.sms.access-key-id=your-access-key-id
aliyun.sms.access-key-secret=your-access-key-secret
aliyun.sms.region-id=cn-hangzhou
aliyun.sms.sign-name=your-sign-name
aliyun.sms.template-code=your-template-code
aliyun.sms.version=2017-05-25
aliyun.sms.domain=dysmsapi.aliyuncs.com
aliyun.sms.action-send-sms=SendSms

示例二:发送营销短信

在发送营销短信的代码中,需要使用营销短信模板,设置营销短信参数。以下是使用Springboot实现发送营销短信的示例代码:

import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;

@Service
public class SmsService {
    @Resource
    private SmsConfig smsConfig;

    public void sendMarketingSms() {
        DefaultProfile profile = DefaultProfile.getProfile(
                smsConfig.getRegionId(),
                smsConfig.getAccessKeyId(),
                smsConfig.getAccessKeySecret());
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        // 需要填写阿里云短信模板编码和短信签名
        request.setDomain(smsConfig.getDomain());
        request.setVersion(smsConfig.getVersion());
        request.setAction(smsConfig.getActionSendBatchSms());
        request.putQueryParameter("RegionId", smsConfig.getRegionId());
        request.putQueryParameter("PhoneNumbers", smsConfig.getPhoneNumbers());
        request.putQueryParameter("SignName", smsConfig.getSignName());
        request.putQueryParameter("TemplateCode", smsConfig.getTemplateCode());
        request.putQueryParameter("SmsUpExtendCode", "");
        ArrayList<CommonRequest.SmsParams> list = new ArrayList<>();
        CommonRequest.SmsParams smsParams = new CommonRequest.SmsParams();
        smsParams.setParam("product", "你好世界");
        smsParams.setParam("price", "9999");
        list.add(smsParams);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(list));
        try {
            // 发送短信
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在以上示例代码中,需要在配置文件中设置以下参数:

aliyun.sms.access-key-id=your-access-key-id
aliyun.sms.access-key-secret=your-access-key-secret
aliyun.sms.region-id=cn-hangzhou
aliyun.sms.sign-name=your-sign-name
aliyun.sms.template-code=your-template-code
aliyun.sms.phone-numbers=your-phone-numbers
aliyun.sms.version=2017-05-25
aliyun.sms.domain=dysmsapi.aliyuncs.com
aliyun.sms.action-send-batch-sms=SendBatchSms

总结

本文以Springboot为基础,以阿里云短信服务为例,介绍了如何使用Java SDK来发送短信的代码实现。通过本文的示例代码,相信读者能够更加方便地使用阿里云短信服务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot实现Java阿里短信发送代码实例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue 路由传参加密的示例代码

    下面我将详细讲解“Vue 路由传参加密的示例代码”的完整攻略。 1. 添加 crypto-js 库 首先我们需要引入一个加密解密库:crypto-js。可以使用 npm 或者通过 CDN 引入。 <!– 通过 CDN 引入 –> <script src="https://cdn.bootcdn.net/ajax/libs/cr…

    Vue 2023年5月27日
    00
  • 梳理一下vue中的生命周期

    梳理Vue中的生命周期是了解Vue的重要组成部分之一,它可以帮助我们更好地理解Vue的工作原理以及响应式数据的流程。Vue的生命周期可以分为四个阶段: 创建阶段(Creation) 在创建阶段中,Vue组件实例会执行以下生命周期钩子函数: beforeCreate: 在实例创建之前,常用于初始化一些非响应式的数据。 created: 在实例创建之后,常用于获…

    Vue 2023年5月27日
    00
  • vue 通过绑定事件获取当前行的id操作

    下面是详细讲解“Vue 通过绑定事件获取当前行的 ID 操作”的完整攻略。 步骤一:初始化 Vue 项目 首先,在本地安装 Vue.js。这里我以 Vue CLI 为例,使用以下命令来初始化一个 Vue 项目: vue create vue-event-demo 然后进入项目目录并启动项目: cd vue-event-demo npm run serve 步…

    Vue 2023年5月28日
    00
  • vue+element-ui前端使用print-js实现打印功能(可自定义样式)

    让我来为你详细讲解“vue+element-ui前端使用print-js实现打印功能(可自定义样式)”的完整攻略。 简介 在前端开发中,有时需要提供页面的打印功能。本篇攻略将介绍如何使用print-js插件实现可自定义样式的打印功能,使用的前端框架是Vue,UI组件库是Element-UI。 安装依赖 首先,我们需要安装print-js依赖: npm ins…

    Vue 2023年5月28日
    00
  • Vue中的循环及修改差值表达式的方法

    下面我会详细讲解Vue中循环及修改差值表达式的方法的完整攻略。 循环列表 在Vue中,我们可以使用v-for指令来遍历数组或对象,并渲染出每一个元素。下面是一个简单的例子,展示了如何通过v-for指令来循环遍历数组并渲染每一个元素。 <template> <div> <h2>循环列表</h2> <ul&g…

    Vue 2023年5月29日
    00
  • 学习Vue组件实例

    学习Vue组件实例需要从以下几个方面入手: 1. 组件实例是什么 在Vue中,组件是可复用的代码块,可以在应用程序中多次使用。每一个组件都是Vue实例,所以它们都有自己的管理状态和生命周期方法。组件实例是一类对象,它们的数据和方法组成了组件的API,同时也定义了组件在页面上的行为和渲染。 当我们使用组件时,会实例化这个组件,得到一个组件实例。我们可以通过访问…

    Vue 2023年5月27日
    00
  • 前端vue3使用axios调用后端接口的实现方法

    当前端使用Vue3框架时,常常需要通过HTTP请求与后端进行交互从而实现前后端数据的交互。而axios作为一个基于Promise的HTTP客户端,已经成为前端开发中最常用的HTTP请求工具之一。下面是Vue3前端使用axios调用后端接口的实现方法攻略: 1. 安装axios 使用npm可以很容易地安装axios,只需要在项目根目录下运行以下命令即可: np…

    Vue 2023年5月27日
    00
  • JS实现点击链接切换显示隐藏内容的方法

    当我们需要将网页中的内容显示和隐藏时,我们可以使用JavaScript来实现。具体的实现方式有多种,下面是两种使用JS实现点击链接切换显示隐藏内容的方法: 一、使用display属性 为需要隐藏或显示的内容添加一个id属性 <p id="content1">这是需要显示和隐藏的内容</p> 在CSS中设置默认样式 …

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部