当前位置:   article > 正文

快速实现短信发送功能(SpringBoot)_发短信springboot怎么写

发短信springboot怎么写

Springboot集成短信发送
准备工作:确定要使用的第三方容联云通讯接口因为是免费测试送8元礼包才选择的,首先注册一个账户,主界面的账户信息是我们所需的,复制代码后,包名、位置自己解决;

一、导入依赖包

  1. <dependency>
  2.             <groupId>com.rly.sms</groupId>
  3.             <artifactId>sms</artifactId>
  4.             <version>1.0.0</version>
  5.         </dependency>

Jar包资源链接记得放入你本地仓库(com/rly/sms)
百度云:https://pan.baidu.com/s/1qPVEJt616k5MUXpyN13xAg
二、application.yml配置文件 等于application.properties

  1.   #短信发送配置信息 acount账户id  token密匙 appId appId app的id 对应上面截图的值
  2.     rly:
  3.        acount: 8a216da866f71d040166fcfabaf40270
  4.        token: 76d7258443294f1aad9902e3433ad61d
  5.        appId: 8a216da866f71d040166fcfabb440276

三、代码实现
SmsService

  1.   package com.yyg.sms;
  2.     /**
  3.      * 短信服务接口
  4.      * Date 2018/11/10
  5.      * @Auther 阳彦刚
  6.      */
  7.     public interface SmsService {
  8.         public void smsSend(String phone,String validateTime);
  9.     }

SmsServiceImpl

  1.  package com.yyg.api.impl;
  2.     import java.io.File;
  3.     import javax.mail.internet.InternetAddress;
  4.     import javax.mail.internet.MimeMessage;
  5.     import org.springframework.beans.factory.annotation.Autowired;
  6.     import org.springframework.beans.factory.annotation.Value;
  7.     import org.springframework.stereotype.Service;
  8.     import com.yyg.api.SmsService;
  9.     /**
  10.      * 短信服务
  11.      * Date 2018/11/10
  12.      * @Auther 阳彦刚
  13.      */
  14.     import com.yyg.utils.SmsSendUtils;
  15.     @Service("SmsService") //交给spring创建bean
  16.     public class SmsServiceImpl implements SmsService {
  17.         @Autowired
  18.         SmsSendUtils sendUtils;
  19.         @Override
  20.         public void smsSend(String phone, String validateTime) {
  21.             // TODO Auto-generated method stub
  22.             sendUtils.smsSend(phone, validateTime);
  23.         }
  24.         }

SmsSendUtils

  1. package com.yyg.utils;
  2.         import java.util.HashMap;
  3.         import java.util.Random;
  4.         import java.util.Set;
  5.         import org.springframework.beans.factory.annotation.Value;
  6.         import org.springframework.stereotype.Component;
  7.         import com.cloopen.rest.sdk.CCPRestSmsSDK;
  8.         @Component //启动的时候扫描到注解
  9.         public class SmsSendUtils{
  10.         //从apllication.yml获取值
  11.             @Value("${rly.acount}")
  12.             String acount;//账户id
  13.             @Value("${rly.token}")
  14.             String token;//密匙 key
  15.             @Value("${rly.appId}")
  16.             String appId;
  17.             public void smsSend(String phone,String validateTime) {
  18.                 HashMap<String, Object> result = null;
  19.                 //初始化SDK
  20.                 CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
  21.                 //******************************注释
  22.                 //*初始化服务器地址和端口                                                       *
  23.                 //*沙盒环境(用于应用开发调试):                
  24.                 restAPI.init("sandboxapp.cloopen.com", "8883");*
  25.                 //*生产环境(用户应用上线使用):restAPI.init("app.cloopen.com", "8883");       *
  26.                 //*******************************注释
  27.                 restAPI.init("app.cloopen.com", "8883");
  28.                 //*初始化主帐号和主帐号令牌,对应官网开发者主账号下的ACCOUNT SID和AUTH TOKEN     *
  29.                 //*ACOUNT SID和AUTH TOKEN在登陆官网后,在“应用-管理控制台”中查看开发者主账号获取*
  30.                 //*参数顺序:第一个参数是ACOUNT SID,第二个参数是AUTH TOKEN。 
  31.                     restAPI.setAccount(acount, token);
  32.                 //******************************注释
  33.                 //*初始化应用ID                                                                 *
  34.                 //*测试开发可使用“测试Demo”的APP ID,
  35.                                 //正式上线需要使用自己创建的应用的App ID    
  36.                    //*应用ID的获取:登陆官网,在“应用-应用列表”,
  37.                                     //点击应用名称,看应用详情获取APP ID
  38.                     restAPI.setAppId(appId);
  39.                 //******************************注释
  40.                 //*调用发送模板短信的接口发送短信                                                                  
  41.                 //*参数顺序说明:                                                                                  *
  42.                 //*第一个参数:是要发送的手机号码,可以用逗号分隔,一次最多支持100个手机号                          
  43.                 //*第二个参数:是模板ID,在平台上创建的短信模板的ID值;测试的时候可以使用系统的默认模板,id为1。    
  44.                 //*系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入”*
  45.                 //*第三个参数是要替换的内容数组。                                                                                                                               *
  46.                 //*假设您用测试Demo的APP ID,则需使用默认模板ID 1,发送手机号是13800000000,传入参数为6532和5,则调用方式为           *
  47.                 //*result = restAPI.sendTemplateSMS("13800000000","1" ,new String[]{"6532","5"});                                                                          *
  48.                 //*则13800000000手机号收到的短信内容是:【云通讯】您使用的是云通讯短信模板,您的验证码是xxxxx,请于xx分钟内正确输入 
  49.                 String randCode = randCode(5);//生成随机数验证码
  50.                 System.out.println(randCode);
  51.                 result = restAPI.sendTemplateSMS(phone,"1" ,new String[]{randCode,validateTime});
  52.             
  53.             System.out.println("SDKTestGetSubAccounts result=" + result);
  54.             if("000000".equals(result.get("statusCode"))){
  55.                 //正常返回输出data包体信息(map)
  56.                 HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
  57.                 Set<String> keySet = data.keySet();
  58.                 for(String key:keySet){
  59.                     Object object = data.get(key);
  60.                     System.out.println(key +" = "+object);
  61.                 }
  62.             }else{
  63.                 //异常返回输出错误码和错误信息
  64.                 System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
  65.             }
  66.         }
  67.         //随机验证码
  68.         public static String randCode(Integer len){
  69.             StringBuilder builder=new StringBuilder();
  70.             Random random=new Random();
  71.             for (int i = 0; i <len; i++) {
  72.                 //产生0-9的随机数 根据len参数
  73.                 int nextInt = random.nextInt(10);
  74.                 //把int类型转换成string类型
  75.                 builder.append(String.valueOf(nextInt));
  76.             }
  77.             return builder.toString();
  78.         }
  79.         }
  80.     

四、测试

  1. package test;
  2.     import static org.junit.Assert.*;
  3.     import java.util.HashMap;
  4.     import java.util.Random;
  5.     import java.util.Set;
  6.     import org.junit.Test;
  7.     import org.junit.runner.RunWith;
  8.     import org.springframework.beans.factory.annotation.Autowired;
  9.     import org.springframework.boot.test.context.SpringBootTest;
  10.     import org.springframework.mail.MailSender;
  11.     import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  12.     import com.alibaba.dubbo.config.annotation.Reference;
  13.     import com.cloopen.rest.sdk.CCPRestSmsSDK;
  14.     import com.yyg.SMSRunApp;
  15.     import com.yyg.api.SmsService;
  16.     import com.yyg.utils.SmsSendUtils;
  17.     @RunWith(SpringJUnit4ClassRunner.class)
  18.     @SpringBootTest(classes=SMSRunApp.class)
  19.     public class SDKTestSendTemplateSMS {
  20.         @Autowired
  21.         SmsService serviceSms;
  22.         @Reference
  23.         MailService mailService;
  24.         @Test
  25.         public void testSMS() throws Exception {
  26.             System.out.println(serviceSms);
  27.             serviceSms.smsSend("13888888888","1");
  28.         }
  29.     }

五、记得绑定测试号码
需要发送给哪个手机号就绑定哪个,第四步测试也是相同号码,因为我这是为了截图,号码不一致,不用管

有疑问的欢迎联系2822256710,加v :yygtq0818126,欢迎点评

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/340107
推荐阅读
相关标签
  

闽ICP备14008679号