pom
<!-- 阿里大鱼短信 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
SmsUtil.java
public class SmsUtil {
//产品名称:云通信短信API产品,开发者无需替换
static final String product = "Dysmsapi";
//产品域名,开发者无需替换
static final String domain = "dysmsapi.aliyuncs.com";
public static StringBuffer sendSms(String userTel) throws ClientException {
String accessKeyId="XXXXXXXXXX";
String accessKeySecret="XXXXXXXXXXXX";
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "1000");
System.setProperty("sun.net.client.defaultReadTimeout", "1000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(userTel);
//必填:短信签名-可在短信控制台中找到
request.setSignName("XXXXXXXXXX");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_000000");
//手机验证码
StringBuffer randomNum = new StringBuffer();
for (int i = 0; i < 4; i++) {
randomNum.append(new Random().nextInt(10));
}
request.setTemplateParam("{'code':"+randomNum+"}");//模板中code参数,接受按照json字符串进行接受
// request.setTemplateParam("{\"code\":\""+randomNum+"\"}");
/*session.setAttribute("phoneVarificationCode",randomNum);*/
//hint 此处可能会抛出异常,注意catch
try {
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
System.out.println(sendSmsResponse.getCode());
return randomNum;
}catch (Exception e){
System.out.println("fail");
return randomNum;
}
}
}
测试
public class Test {
public static void main(String[] args) {
try {
StringBuffer stringBuffer = SmsUtil.sendSms("13030303300");
} catch (ClientException e) {
e.printStackTrace();
}
}
}
BUG
当4位随机验证码是0开头时候,首位0在短信中消失了,那么直接一点,生成验证码的时候每一位都不出现0就行了,使用下面的方式生成4位随机验证码.
//手机验证码
StringBuffer randomNum = new StringBuffer();
for (int i = 0; i < 4; i++) {
randomNum.append(new Random().nextInt(9)+1);//[0,9)==> +1:[1,10)
}