短信服务平台有很多 大家可以根据自己的需求随意选择.整合方式也是大同小异
本文以阿里云短信服务平台为例.
具体分为以下几个步骤:
登录/注册阿里云平台 进入短信服务控制台
前往 https://www.aliyun.com/ 登录.
搜索短信服务 点击进入短信控制台
如果之前没有开通过短信服务 这里需要开通 开通之后就可以进入了
申请短信签名和短信模板
点击左侧的国内消息 首先添加一个签名 点击添加签名
个人用户可以申请一条验证码签名 根据自己的需求申请
申请之后需要审核
推荐使用真实的项目名称 最好附带上线运营的域名 会更容易通过.
申请签名之后 这里我们申请一个模板 点击添加模板 申请之后等待审核通过即可.
短信签名和模板都通过之后 我们就来生成配置类的代码.
生成API Demo
点击快速学习 找到下边的蓝色按钮 点击 查看API Demo
选择SendSms 然后填好对应的参数即可 其他不必要的参数可以留空.
这里代码生成完毕之后 我们就可以进入项目来整合了.
创建SpringBoot项目
引入依赖 阿里云Sms Sdk
<!--阿里云短信服务sdk-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
编写工具类
创建一个工具类
将我们刚才在阿里云生成的API Demo代码复制过来
如果你没有在API Demo中生成 那么你复制下面的代码过去也可以. 改一下参数就ok了
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", "接收短信的手机号码");
request.putQueryParameter("SignName", "短信签名名称");
request.putQueryParameter("TemplateCode", "短信模板ID");
request.putQueryParameter("TemplateParam", "短信模板变量对应的值 JSON格式");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
这里我们填写参数的时候 下边的参数都可以根据自己的实际情况填写
但是
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
这句代码里的accessKeyId和accessSecret怎么获取呢?
获取并填写accessKeyId和accessSecret
在我们的短信控制台 鼠标悬浮在我们的头像上 出现一个列表框
选择 AccessKey管理
如果出现下面的提示 点击继续使用即可.
点击创建AccessKey
获取一下验证码
验证成功后就会出现创建成功弹框.
这里面就包含了我们需要的AccessKeyID和AccessKeySecret
复制到我们的代码里即可
最终结果
记得把main方法括号里的参数删除掉 也可以给main方法改个名
因为发送短信就是调用的main方法这个方法体.
测试
我们可以去测试类进行测试
控制台出现如下语句即为短信发送成功 等到接收到短信就没问题了.