Java最新版发送阿里短信教程

一、概述:

为什么现在的企业越来越多使用阿里云短信服务,究其原因是阿里云短信服务是一种可靠、高效、安全的短信发送服务,它具有以下优点:

  • 高可靠性:阿里云短信服务采用全球领先的短信网关进行短信发送,确保了短信的高可靠性和稳定性。

  • 高并发性:阿里云短信服务支持高并发的短信发送,可以满足大规模短信发送的需求。

  • 安全性:阿里云短信服务采用了多种安全措施,包括加密传输、防攻击等,保障了短信发送的安全性和隐私性。

  • 灵活性:阿里云短信服务提供了多种API接口和SDK,可以方便地集成到各种应用中,同时还支持自定义短信内容和模板。

  • 成本效益:相比于传统的短信服务商,阿里云短信服务的成本更低,同时还提供了多种计费方式和优惠活动,可以帮助用户降低短信发送成本。

一、阿里云短信服务操作

1、上阿里云购买短信模板

在这里插入图片描述

2、创建用户

在这里插入图片描述

3、测试发送短信

在这里插入图片描述

二、使用SpringBoot搭建SMS服务

1、引入依赖

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

2、appplication.yml设置

spring:
	  cloud:
	alicloud:
      sms: 
        accessKeyId: aWjSapoPzD8UV6rzc
        accessKeySecret: cA7F5hinHKCeXvADJx35O
        signName: 我的短信
        templateCode: SMS_11111
        endpoint: dysmsapi.aliyuncs.com

3、创建SmsConfig,指定资源

@Configuration
public class SmsConfig {
    
    

    @Bean
    @ConfigurationProperties(prefix = "spring.cloud.alicloud.sms")
    public SmsServiceImpl smsService() {
    
    
        return new SmsServiceImpl();
    }

}

4、短信发送具体实现

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.koo.modules.third.service.SmsService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;
@Data
@Slf4j
public class SmsServiceImpl implements SmsService {
    
    
	private String accessKeyId;
    private String accessKeySecret;
    private String signName;
    private String templateCode;
    private String endpoint;


    @Override
    public Boolean sendCode(String phone, String code) {
    
    
        Client client = this.createClient(accessKeyId, accessKeySecret);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setPhoneNumbers(phone)
//                .setTemplateParam(code);
                .setTemplateParam("{
    
    \"code\":\"" + code + "\"}");
        RuntimeOptions runtime = new RuntimeOptions();
        try {
    
    
            // 复制代码运行请自行打印 API 的返回值
            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
            System.out.println("短信内容================" + sendSmsResponse.getBody().getMessage());
            System.out.println("短信内容================" + sendSmsResponse.getBody().getCode());
        } catch (Exception error) {
    
    
            // 如有需要,请打印 error
            log.error("错误信息===" + error.getMessage());
        }
        return true;
    }

    public Client createClient(String accessKeyId, String accessKeySecret) {
    
    
        try {
    
    
            Config config = new Config()
                    // 必填,您的 AccessKey ID
                    .setAccessKeyId(accessKeyId)
                    // 必填,您的 AccessKey Secret
                    .setAccessKeySecret(accessKeySecret);
            // 访问的域名
            config.endpoint = endpoint;
            return new Client(config);
        } catch (Exception e) {
    
    
            throw new RuntimeException(e);
        }
    }
 }

5、控制层接口

@Autowired
    SmsServiceImpl smsService;

    /**
     * 发送短信验证码
     * 提供其他模块调用
     * @param phone 号码
     * @param code  验证码
     */
    @GetMapping("/sendcode")
    public R sendCode(@RequestParam("phone") String phone, @RequestParam("code") String code) {
    
    
        smsService.sendCode(phone, code);
        return R.ok();
    }

6、测试

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lovoo/article/details/130930707