一、使用介绍
- 技术介绍:
SMS4J: 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
- 项目地址:
- sms4j 项目整合 文档地址:
二、集成到项目
2.1 引入maven依赖
<dependency>
<groupId>org.dromara.sms4j</groupId>
<artifactId>sms4j-spring-boot-starter</artifactId>
<version> version </version>
<exclusions>
<!-- 排除京东短信内存在的fastjson等待作者后续修复 -->
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</exclusion>
</exclusions>
</dependency>
2.2 配置yml 短信厂商
厂商支持:
阿里云 --- alibaba
容联云 --- cloopen
天翼云 --- ctyun
亿美软通 --- emay
华为云短信 --- huawei京东云短信 --- jdcloud网易云信 --- netease
腾讯云短信 --- tencent
合一短信 --- unisms
云片短信 --- yunpian
助通短信 --- zhutong
鼎众短信 --- dingzhong
联麓短信 --- yunpian
七牛云短信 --- qiniu厂商差异配置文档地址:
该处演示阿里和腾讯短信配置:
--- # sms 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
# https://wind.kim/doc/start 文档地址 各个厂商可同时使用
sms:
# 阿里云 dysmsapi.aliyuncs.com
alibaba:
#请求地址 默认为 dysmsapi.aliyuncs.com 如无特殊改变可以不用设置
requestUrl: dysmsapi.aliyuncs.com
#阿里云的accessKey
accessKeyId: xxxxxxx
#阿里云的accessKeySecret
accessKeySecret: xxxxxxx
#短信签名
signature: 测试
tencent:
#请求地址默认为 sms.tencentcloudapi.com 如无特殊改变可不用设置
requestUrl: sms.tencentcloudapi.com
#腾讯云的accessKey
accessKeyId: xxxxxxx
#腾讯云的accessKeySecret
accessKeySecret: xxxxxxx
#短信签名
signature: 测试
#短信sdkAppId
sdkAppId: appid
#地域信息默认为 ap-guangzhou 如无特殊改变可不用设置
territory: ap-guangzhou
三、阿里云配置
搜索短信服务:
配置发送模版:
创建accesskey用户,就能得到 啊里云的accessKey 和 阿里云的accessKeySecret。复制到上面yml配置中就行
注意:记得给账号授权
四、发送短信测试
测试调用阿里云短信:
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/demo/sms")
public class SmsController {
/**
* 发送短信Aliyun
*
* @param phones 电话号
* @param templateId 模板ID
*/
@GetMapping("/sendAliyun")
@SaIgnore
public R<Object> sendAliyun(String phones, String templateId) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", "1234");
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
return R.ok(smsResponse);
}
/**
* 发送短信Tencent
*
* @param phones 电话号
* @param templateId 模板ID
*/
@GetMapping("/sendTencent")
public R<Object> sendTencent(String phones, String templateId) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
// map.put("2", "测试测试");
map.put("1", "1234");
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.TENCENT);
SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
return R.ok(smsResponse);
}
}
调用参数:
- phones:接受的手机号
- templateId :指的是模版code
发送路径: GET http://localhost:8080/demo/sms/sendAliyun?phones=18761581366&templateId=SMS_305031111
收到短信
博主精心整理专栏,CV大法即可用,感谢您小手点一点 手动跪拜:
1- SpringBoot框架常用配置(若依),代码解读:
2- java常用工具类整理,示例演示:
3- CompletableFuture 异步编排与实际代码展示
4- XXL-JOB 详细学习,手把手带入门