当前位置:   article > 正文

Springboot实现手机短信服务_springboot发送短信

springboot发送短信

一、首先进入云之讯注册账户

链接:https://office.ucpaas.com/.

在这里插入图片描述

进入开发者控制台,获取对应的请求地址、应用ID、用户ID和鉴权token

在这里插入图片描述

进行认证

在这里插入图片描述

创建模板

在这里插入图片描述

二、Springboot集成短信发送

1、Maven依赖

阿里的开源框架FastJson,用于JSON格式字符串与JSON对象及javaBean之间的转换

<dependencies>
	<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <version>2.5.1</version>
    </dependency>
    
    <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.56</version>
	</dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2、application.properties

# 短信服务
# 应用ID
message.appId= xxxxxxxxxxxxxxxxxxxx
# 用户sid
message.account.sid= xxxxxxxxxxxxxxxxxxxx
# 鉴权token
message.auth.token= xxxxxxxxxxxxxxxxxxxx
# 请求地址
message.rest.url= https://open.ucpaas.com/ol/sms/{function}
# 默认手机号
message.default.phone = xxxxxxxxxxx
# 默认模板
message.defaule.templateId = xxxxxx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
功能接口请求地址描述
发送短信指定模板单发https://open.ucpaas.com/ol/sms/sendsms指定变量/固定模板单发
~指定模板群发https://open.ucpaas.com/ol/sms/sendsms_batch指定变量/固定模板群发
状态报告推送状态报告/实时推送短信发送状态报告。
模板接口增加模板https://open.ucpaas.com/ol/sms/addsmstemplate通过接口增加模板
~查询模板https://open.ucpaas.com/ol/sms/getsmstemplate获取账户内的全部模板
~编辑模板https://open.ucpaas.com/ol/sms/editsmstemplate编辑指定模板
~删除模板https://open.ucpaas.com/ol/sms/deletesmstemplate删除指定模板
3、配置类
public class MessageConfig implements Serializable {
    /**
     *  应用ID
     */
    @Value("${message.appId}")
    private String appId;

    /**
     * 用户sid
     */
    @Value("${message.account.sid}")
    private String accountSid;

    /**
     *  鉴权密钥
     */
    @Value("${message.auth.token}")
    private String authToken;

    /**
     *  请求地址
     */
    @Value("${message.rest.url}")
    private String restUrl;

    /**
     *  短信模板ID
     */
    @Value("${message.default.templateId}")
    private String templateId;

    /**
     *  手机号
     */
    @Value("${message.default.phone}")
    private String phone;

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getAccountSid() {
        return accountSid;
    }

    public void setAccountSid(String accountSid) {
        this.accountSid = accountSid;
    }

    public String getAuthToken() {
        return authToken;
    }

    public void setAuthToken(String authToken) {
        this.authToken = authToken;
    }

    public String getRestUrl() {
        return restUrl;
    }

    public void setRestUrl(String restUrl) {
        this.restUrl = restUrl;
    }

    public String getTemplateId() {
        return templateId;
    }

    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
4、RestTemplate配置类
/**
 *  RestTemplate配置类
 */
@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
5、SendMessageService
public interface SendMessageService {
        /**
         *  单发短信
         *
         * @param messageConfig 短信配置
         * @return
         */
        String sendMessage(MessageConfig messageConfig);

        /**
         * 群发短信
         *
         * @param messageConfig 短信配置
         * @return
         */
        String sendBatchMessage(MessageConfig messageConfig);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
6、SendMessageServiceImpl
@Service
public class SendMessageServiceImpl implements SendMessageService {

    private static final Logger logger = LoggerFactory.getLogger(SendMessageServiceImpl.class);

    @Autowired
    private RestTemplate restTemplate;

    @Override
    public String sendMessage(MessageConfig messageConfig) {
        logger.info("sendMessage start,{}", JavaBeanUtil.jacksonToString(messageConfig));
        Assert.notNull(messageConfig,"发送短信配置不能为空");
        //单发邮件API
        String url = messageConfig.getRestUrl()+"sendsms";
        //使用restTemplate进行访问远程服务
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> httpEntity = new HttpEntity<String>(getParameter(messageConfig),headers);
        return restTemplate.patchForObject(url,httpEntity,String.class);
    }

    @Override
    public String sendBatchMessage(MessageConfig messageConfig) {
        logger.info("sendBatchMessage start,{}", JavaBeanUtil.jacksonToString(messageConfig));
        Assert.notNull(messageConfig,"发送短信配置不能为空");
        //群发邮件API
        String url = messageConfig.getRestUrl()+"sendsms_batch";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> httpEntity = new HttpEntity<String>(getParameter(messageConfig),headers);
        return restTemplate.patchForObject(url,httpEntity,String.class);
    }

    /**
     * 配置发送参数
     *
     * @param messageConfig
     * @return
     */
    public String getParameter(MessageConfig messageConfig) {
        JSONObject jsonObject = new JSONObject();
        //基础配置
        jsonObject.put("sid",messageConfig.getAccountSid());
        jsonObject.put("token",messageConfig.getAuthToken());
        jsonObject.put("appid",messageConfig.getAppId());
        //模板ID 参数之间用逗号作为间隔符
        jsonObject.put("template",messageConfig.getTemplateId());
        //要发送的手机号,多个手机号用逗号分隔
        jsonObject.put("mobile",messageConfig.getPhone());
        //用户ID,随状态报告返回,可以不填写
        jsonObject.put("uid","");
        return JSONObject.toJSONString(jsonObject);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
7、SendMessageController
@RestController
@ResponseResult//用于对接口响应体进行包装的注解
@RequestMapping("/send-message")
@Api(value = "发送短信接口",tags = {"发送短信接口"})
public class SendMessageController {
    @Autowired
    private SendMessageService sendMessageService;

    @PostMapping("/simple")
    @ApiOperation(value = "单发消息",notes = "单发手机短信消息")
    public String sendMessage(MessageConfig messageConfig) {
        return sendMessageService.sendMessage(messageConfig);
    }

    @PostMapping("/batch")
    @ApiOperation(value = "群发消息",notes = "群发手机短信消息")
    public String sendBatchMessage(MessageConfig messageConfig) {
        return sendMessageService.sendBatchMessage(messageConfig);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/340086
推荐阅读
相关标签
  

闽ICP备14008679号