Springboot整合阿里云短信服务代码详解


前言

欢迎大家阅读本篇博客,今天我将为大家分享如何使用SpringBoot来整合阿里云短信服务,并实现简单的短信发送功能。在现代信息化社会中,短信作为一种快捷、直接的通信方式,广泛应用于各行各业。而借助阿里云短信服务,我们可以轻松地将短信功能集成到我们的SpringBoot应用程序中,提供高效、可靠的短信发送能力。

无论是发送验证码、通知用户或者其他类似场景,本文所介绍的方法都能帮助你快速构建起一个可靠的短信发送系统。同时,阿里云短信服务还提供了丰富的功能和API,诸如短信模板、短信发送记录查询等,你可以根据实际需求进行扩展和定制。

无需担心,即使你没有太多的后端开发经验,本文也会详细解释每一步,并提供示例代码以帮助你更好地理解和应用。我相信,通过阅读本篇博客,你将能够轻松地掌握Spring Boot整合阿里云短信服务的方法,并成功地实现简单的短信发送功能。

一、阿里云短信服务是什么?

阿里云短信服务是由阿里云提供的一项强大的云通信服务,旨在帮助开发者实现高效、可靠的短信发送功能。借助阿里云短信服务,你可以快速搭建起一个稳定、安全的短信通知系统,并将其集成到你的应用程序中。

以下是阿里云短信服务的几个重要特点:

  1. 全球覆盖:阿里云短信服务支持全球范围内的短信发送,涵盖数十个国家和地区。你可以轻松地通过API接口将短信发送到目标手机号码。

  2. 高可靠性:阿里云短信服务基于阿里云强大的云计算平台构建,具有高可靠性和稳定性。无论是高并发场景还是海量消息发送,都能保证短信的及时送达。

  3. 安全保障:阿里云短信服务采用了多重安全机制,包括身份验证、数据加密和数据备份等,以确保用户的信息安全和隐私保护。

  4. 灵活的消息模板:阿里云短信服务支持自定义短信模板,你可以根据业务需求编写个性化的短信内容,并通过模板进行发送。这样不仅能保证短信的合规性,还能提高短信发送效率。

  5. 精细化管理:阿里云短信服务提供了丰富的管理功能,包括短信发送记录查询、签名管理、模板管理等。你可以随时查看短信发送的状态和结果,并对短信相关资源进行管理和配置。

使用阿里云短信服务,你可以实现各种短信发送场景,如用户注册验证、账号安全通知、订单状态更新等。无论是小型企业还是大型企业,都可以通过阿里云短信服务轻松构建出稳定、可靠的短信通知系统。

二、开通阿里云短信服务

  • 注册阿里云账号:首先,你需要在阿里云官网上注册一个账号。如果已经有了阿里云账号,可以直接登录。
  • 开通短信服务:在阿里云控制台中,搜索并选择"短信服务",然后按照指引开通该服务。你可能需要提供一些相关信息,如手机号码、邮箱等以进行身份验证。
  • 获取Access Key和Secret Key:在阿里云控制台的"访问控制RAM"页面中,创建或获取Access Key和SecretKey。这对密钥将用于在代码中进行API鉴权。
  • 配置短信签名和模板:在阿里云短信服务控制台中,你需要注册短信签名并创建短信模板。短信签名是短信发送时显示的发送者名称,而短信模板定义了短信内容的固定部分和可替换参数。

三、SpringBoot来整合阿里云短信服务

1.添加阿里云SDK依赖

<dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.6.3</version>
 </dependency>
 <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
        <version>2.2.1</version>
        </dependency>
<dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
</dependency>

2.添加application.properties配置

# 阿里云访问凭证(Access KeySecret Key)
spring.aliyun.access-key=your-access-key # 替换为你的Access Key
spring.aliyun.secret-key=your-secret-key # 替换为你的Secret Key

# 阿里云短信服务配置
spring.aliyun.sms.sign-name=your-sign-name # 替换为你的短信签名
spring.aliyun.sms.template-code=your-template-code # 替换为你的短信模板代码

3.编写Service层代码

@Service
public class AliyunSmsService {

    @Value("${aliyun.sms.signName}")
    private String signName; // 阿里云短信签名

    @Value("${aliyun.sms.templateCode}")
    private String templateCode; // 阿里云短信模板代码

    @Value("${aliyun.accessKeyId}")
    private String accessKeyId; // 阿里云Access Key ID

    @Value("${aliyun.accessKeySecret}")
    private String accessKeySecret; // 阿里云Access Key Secret

    /**
     * 发送短信
     *
     * @param mobile 手机号码
     * @return 是否发送成功
     * @throws UnsupportedEncodingException 不支持的编码异常
     */
    public boolean send(String mobile) throws UnsupportedEncodingException {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);
        SendSmsRequest request = new SendSmsRequest();
        request.setPhoneNumbers(mobile); // 设置手机号码
        request.setSignName(URLDecoder.decode(signName, "UTF-8")); // 设置短信签名,进行URL解码
        request.setTemplateCode(templateCode); // 设置短信模板代码
        try {
            SendSmsResponse response = client.getAcsResponse(request);
            System.out.println(response.getCode()); // 输出返回状态码
            return "OK".equals(response.getCode()); // 返回是否发送成功
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

}
  1. @Service注解表示该类是一个服务类,用于提供业务逻辑。

  2. @Value注解用于将配置文件中的值注入到对应的成员变量中。在这里,signNamtemplateCode、accessKeyId和accessKeySecret分别对应了application.properties或application.yml配置文件中的相应属性。

  3. send()方法用于发送短信。它接收一个手机号码作为参数,并返回一个布尔值表示是否发送成功。

  4. 首先,通过创建DefaultProfile对象并传入阿里云的Access Key ID和Access Key Secret来进行身份验证。

  5. 然后,使用DefaultAcsClient类创建一个客户端对象,以便与短信服务进行交互。

  6. 创建一个SendSmsRequest对象,并设置要发送的手机号码、短信签名和短信模板代码等信息。

  7. 调用client.getAcsResponse(request)发送短信请求,并捕获可能抛出的异常。

  8. 如果发送成功,返回的response.getCode()会返回"OK",否则返回其他状态码。

  9. 最后,根据返回的状态码判断短信是否发送成功,并返回相应的布尔值。

该类的作用是封装了发送短信的逻辑,一边可以在其他地方调用send()方法来发送短信。需要确保配置文件中的相关属性正确配置,并且阿里云短信服务已经开通并获得相应的Access Key和短信模板。

4.编写Controller层代码

@RestController
public class SmsController {
    @Autowired
    private AliyunSmsService smsService;
    @RequestMapping("sms")
     public boolean  send(String mobile) throws ClientException, UnsupportedEncodingException {
         return smsService.send(mobile);
   }
}
  1. SmsController类是一个普通的Java类,没有任何特殊注解。它通过处理HTTP请求来提供相应的功能。

  2. @Autowired注解用于自动注入AliyunSmsService对象,使得可以在该控制器中使用smsService对象的方法。

  3. @RequestMapping(“sms”)注解指定了处理HTTP请求的URL路径为/sms。当客户端发送带有该路径的请求时,将会调用send()方法进行处理。

  4. send()方法接收一个名为mobile的字符串参数,表示要发送短信的手机号码。

  5. 在方法体内,直接调用smsService.send(mobile)来调用AliyunSmsService中的send()方法发送短信。

  6. 方法返回一个布尔值,表示短信是否成功发送

5.测试

在浏览器输入:

http://localhost:8080/sms?mobile="绑定的手机号"

在这里插入图片描述
可以看到短信发送成功了。

总结

在本文中,我已经分享如何使用SpringBoot来整合阿里云短信服务,并实现简单的短信发送功能。相信大家也可以轻松地将短信功能集成到我们的SpringBoot应用程序中。

感谢您的阅读,祝大家使用愉快,享受阿里云短信服务为应用程序带来的便利和效益!

  • 49
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啄sir.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值