首页 > 其他分享 >通过第三方平台实现手机发送短信

通过第三方平台实现手机发送短信

时间:2022-12-10 16:01:46浏览次数:74  
标签:短信 String sms 验证码 private 发送 com 第三方

通过第三方平台实现手机发送短信

  • 短信验证码平台选择考虑点

    • 各个类型短信价格

    • 短信到达率、到达时间

    • 短信内容变量灵活,方便支持多场景

    • 支持多种推广内容的短信发放,例如业务推广、新产品宣讲、会员关怀等内容的短信

    • 多维度数据统计-查看请求量、发送成功量、失败量、等

    • 引入第三方短信平台
  • 短信平台

  • 使用阿里云市场

    image-20221210154202856

  • 参数:

    AppKey:XXXXXX     AppSecret:XXXXXX
    
    AppCode:XXXXXXXXXX
    
    模板ID: XXXXXX
    
    实战

    第三方平台短信使用的规范:【聚美智数】短信验证码-106三网短信验证码-验证码短信-短信验证码接口-验证码短信-短信验证码API-验证码-手机短信验证码【最新版】-云市场-阿里云 (aliyun.com)

    • 添加SmsConfig配置

      • application.yml

        #------自定义sms配置------
        sms:
          #AppCode
          app-code: 7470e2e1320c4451b26260ea820b1be2
          #模板Id
          template-id: M105EABDEC
        
      • 通过springBoot获取配置文件中的属性

        • 使用注解:
        • @ConfigurationProperties(prefix = "sms"):配置文件中的前缀
          @Configuration:指定该类为配置类
        /**
         * @Author:fan
         * @Description:
         * @Date:2022-11-25 23:06
         */
        @ConfigurationProperties(prefix = "sms")
        @Configuration
        @Data
        public class SmsConfig {
        
            private String appCode;
        
            private String templateId;
        }
        
    • SmsComponent工具类封装

      • 入参是:手机号、第三方短信平台的模板id、短信内容
      • 使用的是 restTemplate 发送post请求
      @Component
      @Slf4j
      public class SmsComponent {
      
          private static final String URL_TEMPLATE= "https://jmsms.market.alicloudapi.com/sms/send?mobile=%s&templateId=%s&value=%s";
      
          @Autowired
          private RestTemplate restTemplate;
      
          @Autowired
          private SmsConfig smsConfig;
      
          /**
           * 发送短信验证码
           * @param mobile 短信接收人号码
           * @param templateId 短信模板ID
           * @param value 短信发送的内容
           */
          public void send(String mobile,String templateId,String value){
      
              String url = String.format(URL_TEMPLATE,mobile,templateId,value);
      
              HttpHeaders httpHeaders = new HttpHeaders();
              //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
              httpHeaders.set("Authorization","APPCODE "+smsConfig.getAppCode());
      
      
              HttpEntity entity = new HttpEntity<>(httpHeaders);
              ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
              log.info("url={},body={}",url,response.getBody());
              if(response.getStatusCode().is2xxSuccessful()){
                  log.info("发送短信验证码成功");
              }else {
                  log.error("发送短信验证码失败:{}",response.getBody());
              }
          }
      }
      
    • 单元测试

      @RunWith(SpringRunner.class)
      @SpringBootTest(classes = AccountApplication.class)
      @Slf4j
      public class SmsTest {
      
          @Autowired
          private SmsComponent smsComponent;
      
      
          @Test
          public void testSendSms(){
      
              smsComponent.sendCode("13113677337","M72CB92894","223344");
          }
      
      }
      

标签:短信,String,sms,验证码,private,发送,com,第三方
From: https://www.cnblogs.com/snail05/p/16971726.html

相关文章