Java实现短信验证码(阿里云短信服务)

1.导入jar包:
<dependencies> <!-- 阿里云短信服务所需 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.0.6</version> <!-- 注:如提示报错,先升级基础包版,无法解决可联系技术支持 --> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency> </dependencies>
2.编码


import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class SendShort {
	 public static void main(String[] args){
		 String Phone="176029xxxxx";
		 String Code=String.valueOf((int)((Math.random()*9+1)*100000));
		 try {
			 SendSmsResponse response=sendSms(Phone,Code);
			 System.out.println("短信接口返回的数据----------------");
			 System.out.println("Code=" + response.getCode());
			 System.out.println("Message=" + response.getMessage());
			 System.out.println("RequestId=" + response.getRequestId());
			 System.out.println("BizId=" + response.getBizId());
			 if("OK".equals(response.getCode())){
				 System.out.println("校验正确"+Code);
			 }else {
				 System.out.println("校验失败"+Code);
			}

		} catch (ClientException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("错误信息"+e.getMessage());
			
		}
	 }
		public static SendSmsResponse sendSms(String telephone, String code) throws ClientException {
		    //可自助调整超时时间
		    System.setProperty(Config.defaultConnectTimeout, Config.Timeout);
		    System.setProperty(Config.defaultReadTimeout, Config.Timeout);
		    //初始化acsClient,暂不支持region化
		    IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", Config.accessKeyId, Config.accessKeySecret);
		    DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou",Config.product, Config.domain);
		    
		    IAcsClient acsClient = new DefaultAcsClient(profile);
		    //组装请求对象-具体描述见控制台-文档部分内容
		    SendSmsRequest request = new SendSmsRequest();
		    //必填:待发送手机号
		    request.setPhoneNumbers(telephone);
		    //必填:短信签名-可在短信控制台中找到
		    request.setSignName(Config.SignName);    // TODO 修改成自己的
		    //必填:短信模板-可在短信控制台中找到
		    request.setTemplateCode(Config.TemplateCode);    // TODO 修改成自己的
		    //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
		//        request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
		    request.setTemplateParam("{code:" + code +"}");
		    //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
		    //request.setSmsUpExtendCode(code);
		    //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
		    request.setOutId("Id");
		    //hint 此处可能会抛出异常,注意catch
		    SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
		    if(sendSmsResponse.getCode()!= null && sendSmsResponse.getCode().equals("OK")){
		        System.out.println("短信发送成功!");
		    }else {
		        System.out.println("短信发送失败!");
		    }
		    return sendSmsResponse;
		}
}

3配置代码`
/**

  • 短信的配置文件
  • @ClassName: Config
  • @Description: TODO
  • @author Administrator
  • @date 2019年10月22日

*/
public class Config {
// 设置超时时间-可自行调整
final static String defaultConnectTimeout = “sun.net.client.defaultConnectTimeout”;
final static String defaultReadTimeout = “sun.net.client.defaultReadTimeout”;
final static String Timeout = “10000”;
// 初始化ascClient需要的几个参数
final static String product = “Dysmsapi”;// 短信API产品名称(短信产品名固定,无需修改)
final static String domain = “dysmsapi.aliyuncs.com”;// 短信API产品域名(接口地址固定,无需修改)
// 替换成你的AK (产品密)
final static String accessKeyId = “LTAI4FxtPKBJFhDnn5jzCfhr”;// 你的accessKeyId,填你自己的 上文配置所得 自行配置
final static String accessKeySecret = “ruMfPJZNtohVYl9DRIq92EBmNCrVpr”;// 你的accessKeySecret,填你自己的 上文配置所得 自行配置
// 必填:短信签名-可在短信控制台中找到
final static String SignName = “客户管理系统登录验证”; // 阿里云配置你自己的短信签名填入
// 必填:短信模板-可在短信控制台中找到
final static String TemplateCode = “SMS_175538934”; // 阿里云配置你自己的短信模板填入
}
`

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值