首先你需要登录阿里云的短信服务平台,https://www.aliyun.com/product/sms?spm=5176.12825654.1kquk9v2l.1.1f7e2c4avOrZhx&aly_as=5IHIf3uYw 注册,登录,申请开通短信服务。然后点击管理控制平台,点击右边的accesskey。
点击开始使用子账户的accesskey,
自己管理自己的登录名称,显示名称,然后下面两个打勾。然后你就有自己的AccessKey ID 和AccessKeySecret, 复制保存好。然后点击用户,添加权限。系统策略里面搜索dys,两个都添加上吧。
然后找到这个页面签名管理和模板管理里面申请签名名称和模板CODE。下面开始代码阶段。。
首先你要自己引入阿里云的短信jar包
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency>
写好自己的配置文件,signName就是你ide签名名称模板CODE就是下面那个verifyCodeTemplate。然后你自己的keyid和keysecret输进去就好了。
leyou:
sms:
accessKeyId: xxxxxxxxxxxxx
accessKeySecret: xxxxxxxxxxxx
signName: xxxx
verifyCodeTemplate: xxxxxxxxxx
通过下面这个方法读取配置文件中的参数。
/* * 读取配置文件 * * */ @ConfigurationProperties(prefix = "leyou.sms") public class SmsProperties { String accessKeyId; String accessKeySecret; String signName; String verifyCodeTemplate; public String getAccessKeyId() { return accessKeyId; } public void setAccessKeyId(String accessKeyId) { this.accessKeyId = accessKeyId; } public String getAccessKeySecret() { return accessKeySecret; } public void setAccessKeySecret(String accessKeySecret) { this.accessKeySecret = accessKeySecret; } public String getSignName() { return signName; } public void setSignName(String signName) { this.signName = signName; } public String getVerifyCodeTemplate() { return verifyCodeTemplate; } public void setVerifyCodeTemplate(String verifyCodeTemplate) { this.verifyCodeTemplate = verifyCodeTemplate; } }
最后就是我们的发送短信的代码了
@Component @EnableConfigurationProperties(SmsProperties.class) //开启自动配置,读取配置文件中的参数 public class SmsUtils { @Autowired private SmsProperties prop; public void sendSms(String phone, String code, String signName, String verifyCodeTemplate) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", prop.getAccessKeyId(), prop.getAccessKeySecret()); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST);//默认post提交 request.setDomain("dysmsapi.aliyuncs.com");//阿里默认的domain request.setVersion("2017-05-25"); //版本号 request.setAction("SendSms");//这个参数作用未知 request.putQueryParameter("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", phone); request.putQueryParameter("SignName", signName); request.putQueryParameter("TemplateCode", verifyCodeTemplate); //短信验证码 我一开始不知道,老是报错,说我json格式有问题,后来才反应过来必须这样拼接成json格式的字符串 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(); } } }
水平有限,不知道有没有其他BUG。。。