springboot 如何发送短信功能

springboot 如何发送短信功能

在 Spring Boot 中实现手机号发送短信功能,一般可以通过以下步骤:

一、选择短信服务提供商

这里使用了阿里云短信服务的 SDK 来发送短信。

阿里云官网:https://www.aliyun.com/

1.1 开通短信服务

在这里插入图片描述

进入短信服务控制台,依照如下步骤进行申请

在这里插入图片描述

1.2 新增资质

在这里插入图片描述

1.3 申请签名

在这里插入图片描述

1.4 申请模版

在这里插入图片描述

1.5 注册并获取相关凭证

在这里插入图片描述

使用子用户更安全

在这里插入图片描述

在这里插入图片描述

创建好之后,立刻将 AccessKey ID 和 AccessKey Secret 复制并保存

在这里插入图片描述

然后点击用户名称

在这里插入图片描述

二、添加依赖

API 地址:https://next.api.aliyun.com/document/Dysmsapi/2017-05-25/overview

在这里插入图片描述

以阿里云短信服务为例,使用 Maven 构建项目,添加如下依赖:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dysmsapi20170525</artifactId>
    <version>3.0.0</version>
</dependency>

三、封装发送短信工具类

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;

public class SmsSenderUtil {
    // 服务提供商的凭证 AccessKey ID 和 AccessKey Secret
    private static final String ACCESS_KEY_ID = "你的 AccessKey ID";
    private static final String ACCESS_KEY_SECRET = "你的 AccessKey Secret";
    private static final String DOMAIN = "dysmsapi.aliyuncs.com";
    private static final String SIGN_NAME = "你申请的签名名称";
    private static final String TEMPLATE_CODE = "你的模版 code";

    // 短信发送接口
    public static SendSmsResponse sendSms(String phoneNumber, String code) {
        Config config = new Config()
                // 你的 AccessKey ID
                .setAccessKeyId(ACCESS_KEY_ID)
                // 你的 AccessKey Secret
                .setAccessKeySecret(ACCESS_KEY_SECRET);
        // 访问的 SDK 产品域名
        config.endpoint = DOMAIN;
        try {
            Client client = new Client(config);
            // 调用短信发送接口
            SendSmsRequest request = new SendSmsRequest()
                    // 必填:待发送手机号
                    .setPhoneNumbers(phoneNumber)
                    // 必填:短信签名
                    .setSignName(SIGN_NAME)
                    // 必填:短信模板CODE
                    .setTemplateCode(TEMPLATE_CODE)
                    // 选填:模板参数
                    .setTemplateParam("{\"code\":\"" + code + "\"}");
            return client.sendSms(request);
        } catch (Exception e) {
            return null;
        }
    }
}

四、发送短信测试

@SpringBootTest
public class ApplicationTests {    
    @Test
    public void testSms() throws Exception {
        int randomNum = new Random().nextInt(900000) + 100000;
        String code = String.format("%06d", randomNum);
        SendSmsResponse response = SmsSenderUtil.sendSms("发送的电话号码", code);
        System.out.println(new Gson().toJson(response.body));
    }
}

测试输出结果:

{ 
    "bizId":"420420322706264631^0",
    "code":"OK",
    "message":"OK",
    "requestId":"EEEF9008-483F-5221-A78A-F8B742D49194"
}
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot发送短信可以使用短信服务商提供的 SDK 或 API 接口,这里以阿里云为例介绍。 1. 引入阿里云短信服务 SDK 在 Maven 中添加以下依赖: ```xml <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.3.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.0.0</version> </dependency> ``` 2. 配置阿里云短信服务相关参数 在`application.properties`中添加以下配置: ```properties # 阿里云短信服务 aliyun.sms.access-key-id=your_access_key_id aliyun.sms.access-key-secret=your_access_key_secret aliyun.sms.sign-name=your_sign_name aliyun.sms.template-code=your_template_code ``` 需要替换`your_access_key_id`、`your_access_key_secret`、`your_sign_name`和`your_template_code`为自己的阿里云短信服务相关信息。 3. 编写发送短信的方法 ```java import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20170525.SendSmsRequest; import com.aliyuncs.sms.model.v20170525.SendSmsResponse; @Service public class SmsService { @Value("${aliyun.sms.access-key-id}") private String accessKeyId; @Value("${aliyun.sms.access-key-secret}") private String accessKeySecret; @Value("${aliyun.sms.sign-name}") private String signName; @Value("${aliyun.sms.template-code}") private String templateCode; public boolean sendSms(String phoneNumber, String code) { IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(phoneNumber); request.setSignName(signName); request.setTemplateCode(templateCode); request.setTemplateParam("{\"code\":\"" + code + "\"}"); try { SendSmsResponse response = client.getAcsResponse(request); return "OK".equals(response.getCode()); } catch (ServerException e) { e.printStackTrace(); return false; } catch (ClientException e) { e.printStackTrace(); return false; } } } ``` 需要注入`accessKeyId`、`accessKeySecret`、`signName`和`templateCode`等配置,然后调用阿里云短信服务 SDK 提供的方法发送短信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的柠檬我的心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值