注册的时候或者什么时候,可以使用短信验证码,记录一下阿里短信的使用
1. 登录阿里云后先给自己的账户充值
阔气的大手一挥,充他个2块钱

2. 设置一些必要的东西
查看阿里云官方的使用文档,跟着步骤来即可,虽然看起来很复杂
主要需要的东西包括
AccessKey ID
 
AccessKey SECRET
 
签名
 
模版CODE
 
AccessKey SECRET只有在创建的第一次可以看到,记得记录下来,错过了就要再创建一个,提醒一下,虽然创建只需要点一下鼠标。
3. Java SDK使用
官网的文档也写得很详细了
- maven依赖
 
1 2 3 4 5
   | <dependency>     <groupId>com.aliyun</groupId>     <artifactId>aliyun-java-sdk-core</artifactId>     <version>4.5.3</version> </dependency>
   | 
 
- 代码就直接从官网生成的模板拉下来就可以运行了
 

- 由于真正使用的时候电话号码是用户填写的,验证码是随机生成的,签名和模板不一定都只使用一套,总之,不能写死。写一个Util工具类,用参数的方式传进去,只需要替换成自己的accessKeyId和accessKeySecret就可以使用了
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   | public class SmsUtils 
      //产品名称:云通信短信API产品,开发者无需替换     static final String product = "Dysmsapi";          static final String domain = "dysmsapi.aliyuncs.com";
      static final Logger logger = LoggerFactory.getLogger(SmsUtils.class);
      public CommonResponse sendSms(String phone, String code, String signName, String template) throws ClientException {
          DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "替换成你的accessKeyId", "替换成你的accessKeySecret");         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", phone);         request.putQueryParameter("SignName", signName);         request.putQueryParameter("TemplateCode", template);         request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");         request.putQueryParameter("OutId", "suibian123");
          CommonResponse response = client.getCommonResponse(request);
          logger.info("发送短信状态:{}", response.getHttpStatus());         logger.info("发送短信消息:{}", response.getData());
          return response;     } }
   | 
 
当然,accessKeyId和accessKeySecret也可以不写死,通过properties或yml文件来读取,那就最好了,不展开了
最后上效果图
