记录
1.环境准备
1.1 开通阿里云短信服务
- 注册阿里云账号
- 进入控制台开通短信服务
- 需要自己编辑短信模板提交阿里云审核(短信发送需要购买)
- 获取accessKeyId & secret
注意:需要开通短信服务权限
1.2 引入依赖
<!-- 阿里云短信 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
2.编码调用(阿里云官方案例)
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
public class SendSms {
public static void main(String[] args) {
// code是短信验证码,这里测试先写死,生产环境需要用算法随机生成最多6位数字验证码
String code = "9878";
// 参数一不需要修改, 参数二、三填写你的个人账户信息
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "你的accessKeyId",
"你的secret");
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");
// 区域ID要跟你申请的区域匹配
request.putQueryParameter("RegionId", "cn-hangzhou");
// PhoneNumbers指定接收短信手机号码
request.putQueryParameter("PhoneNumbers", "xxxxxxxxxxx");
// SignName指定你在阿里云控制台短信服务中申请并审核通过的空间名
request.putQueryParameter("SignName", "xxxx");
// TemplateCode指定你在阿里云控制台配置的短信模板
request.putQueryParameter("TemplateCode", "xxxxx");
/**
TemplateParam将随机生成的验证码作为请求参数发送,此验证码会加入到你的短信模板中
注意: 请求参数为JSON格式,key名称为code
**/
request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
try {
CommonResponse response = client.getCommonResponse(request);
// 获取响应结果,可查看到发送的状态
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
生产环境下可以把验证码存入redis,设置过期时间
为方便自己查看特此记录!