调用阿里云的短信服务
step-1、首先去阿里云申请短信服务,第一次使用会有100条免费短信(3个月有效期)
step-2、申请短信签名以及短信模版,(注意:如果是个人用户,在申请短信签名时,签名要使用个人网站时,最好将网站的域名地址等写上,否则第一次会审核不通过)。
step-3、申请accessKey
step-4、代码实现
@ConfigurationProperties(prefix = "spring.cloud.alicloud.sms")
@Component
@Data
public class SmsComponent {
private String accessKeyId;
private String accessKeySecret;
/**
* 域名
*/
private String sysDomain;
/**
* 签名
*/
private String signName;
/**
* 验证码模版编码
*/
private String templateSendSmsCode;
/**
* 版本号:2017-05-25
*/
private String sysVersion;
private String regionId;
/**
* 发送短信验证码-目前调用阿里云服务
* @param phone
* @param code
*/
public void sendSmsCode(String phone, String code){
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain(sysDomain);
request.setSysVersion(sysVersion);
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", regionId);
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", templateSendSmsCode);
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();
}
}
}
配置文件:
spring:
cloud:
alicloud:
sms:
access-key-id: access-key
access-key-secret: access-key-secret
sysDomain: dysmsapi.aliyuncs.com
sign-name: 签名名称
template-send-sms-code: 短信模版code
sys-version: 2017-05-25
region-id: cn-hangzhou
依赖POM:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
测试结果:
{
"RequestId": "A56D1F09-",
"Message": "OK",
"BizId": "63691541206877",
"Code": "OK"
}
吐槽一下:我这个短信收的有点慢啊