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

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项目打包发布上线的方法步骤”的完整攻略,包括示例说明。 环境准备 需要Node.js环境、Vue CLI脚手架工具以及nginx服务器等。 在本地电脑上安装Vue CLI脚手架工具:npm install -g @vue/cli 创建Vue项目:vue create <project-name> 打包 进入项目所在目录:cd &lt…

    Vue 2023年5月28日
    00
  • vue excel上传预览和table内容下载到excel文件中

    Vue Excel上传预览 在Vue中实现Excel上传预览,需要使用以下三个库:xlsx、file-saver、vue-xlsx。引入这三个库后,在Vue组件中可以实现以下代码: <template> <div> <input type="file" @change="onUpload"…

    Vue 2023年5月28日
    00
  • electron vue 模仿qq登录界面功能实现

    好的!接下来我会详细讲解“electron vue 模仿qq登录界面功能实现”的完整攻略。 首先,你需要了解以下内容: Electron:一个使用 JavaScript、HTML 和 CSS 等 Web 技术创建桌面应用程序的开源框架; Vue.js:一款渐进式 JavaScript 框架,易于上手、轻量级且易于扩展; vue-cli-plugin-elec…

    Vue 2023年5月28日
    00
  • vue请求数据的三种方式

    下面就开始讲解“vue请求数据的三种方式”攻略: 前言 在前后端分离的架构中,前端的数据一般是通过ajax等方式去获取后端服务的数据。而在Vue框架中,请求数据的方式有三种:$ajax、axios、vue-resource。 1.使用$ajax请求数据 // 引入jquery.js <script src="http://ajax.googl…

    Vue 2023年5月28日
    00
  • 自定义Vue组件打包、发布到npm及使用教程

    下面是详细的“自定义Vue组件打包、发布到npm及使用教程”的完整攻略: 一、前置准备 在开始之前,你需要确保以下几点已经完成: 已安装 Node.js 已安装 Vue CLI 已注册 NPM 账号并登录 二、创建 Vue 组件 创建 Vue 项目 首先,我们需要使用 Vue CLI 快速创建一个 Vue 项目。在命令行中运行以下命令: vue create…

    Vue 2023年5月28日
    00
  • vue如何使用moment处理时间戳转换成日期或时间格式

    下面是关于使用moment处理时间戳转换成日期或时间格式的完整攻略。 什么是moment.js? moment.js 是一个javascript 日期库,可用于解析、验证、操作和格式化日期。它支持日期和时间的计算、时间戳、日期字符串解析和格式化,以及各种本地化和时区设置等功能。 在Vue中使用moment.js 使用moment.js需要先将其引入到Vue项…

    Vue 2023年5月29日
    00
  • Vue3 中路由Vue Router 的使用实例详解

    Vue3 中路由Vue Router 的使用实例详解 介绍 Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,可以很方便的用于构建单页应用程序。Vue Router 2.x 版本为 Vue 2.x 版本提供路由功能,而 Vue Router 3.x 版本为 Vue 3.x 版本提供路由功能,并在性能和体积方面得到了…

    Vue 2023年5月28日
    00
  • Vue基于NUXT的SSR详解

    Vue基于NUXT的SSR详解 什么是SSR SSR是指服务器端渲染(Server-side rendering),是将Vue组件在服务器端渲染成HTML字符串,然后再将这个HTML字符串返回给浏览器端,浏览器接收到这个HTML字符串后进行解析,即可渲染出页面来。 相对于SPA(单页应用程序)的客户端渲染(CSR),SSR更加利于SEO,加快页面的渲染速度,…

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