使用阿里云发送短信验证码。

首先你需要登录阿里云的短信服务平台,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。。。


版权声明:本文为u010740881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。