使用阿里云提供的短信服务发送短信(个人版)

本人最近需要实现一个注册发短信验证码的功能,找了几家短信服务平台,如腾讯云,云片网等,发现他们都没有提供给用户个人的短信服务权限,申请短信签名等都需要有企业等相关证明,最后找到了阿里云的短信服务平台,下面就介绍下个人如何开通使用阿里云提供的短信服务。

首先是注册并登录阿里云,然后开通短信服务等。要发送短信之前需要先申请短信签名,每个个人用户可以申请一个验证码签名,如下图:

使用阿里云提供的短信服务发送短信(个人版)_第1张图片

填写相关信息后点击确定,会进入签名审核状态,审核成功就可以使用该签名,一般是半小时左右审核完。

然后是申请短信模板,如下图:

使用阿里云提供的短信服务发送短信(个人版)_第2张图片

一般也是半小时左右审核完,通常模板会比签名更容易通过审核。

签名和模板都审核通过后,就可以进行开发了。如果调用API出错,可以通过以下链接查看API错误码,https://help.aliyun.com/document_detail/101346.html。

示例代码如下:

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
/*
pom.xml

  com.aliyun
  aliyun-java-sdk-core
  4.0.3

*/

//发送短信只需要阿里云SDK核心库,需要导入:aliyun-java-sdk-core-4.1.0.jar,同时依赖google的gson,需要导入:gson-2.8.5.jar,否则报错
public class CommonRpc {
    public static void main(String[] args) {
        // 创建DefaultAcsClient实例并初始化
       /* DefaultProfile profile = DefaultProfile.getProfile(
            "",          // 您的地域ID
            "",      // 您的AccessKey ID
            ""); // 您的AccessKey Secret
*/     
        
        //自己创建了子账号 AccessKey并授权可访问一切短信服务,
//        输入对应的AccessKey ID和AccessKey Secret,相当于账号密码调用短信API,须保密

        DefaultProfile profile = DefaultProfile.getProfile("default", "", "");
       
        IAcsClient client = new DefaultAcsClient(profile);
        /*阿里云产品的API有RPC和RESTful两种风格,不同风格的API的CommonRequest的调用方法也不同,每种API都只有一种调用风格。
                    通常API参数中包含Action参数的是RPC风格,调用的某个产品的API没有提供SDK时,可以采用泛用型的API调用方式(CommonRequest)。
                    使用CommonRequest调用方式可实现任意Open API接口的调用。*/
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
//      设置发送请求方法
        request.setMethod(MethodType.POST);
//      设置发送短信服务器,默认为dysmsapi.aliyuncs.com
        request.setDomain("dysmsapi.aliyuncs.com");
//      设置版本,默认为2017-05-25
        request.setVersion("2017-05-25");
//      设置调用的API方法名
        request.setAction("SendSms");
//      接收短信的电话号码
        request.putQueryParameter("PhoneNumbers", "电话号码");
//      短信签名,如【阿里云】,须申请,使用申请成功的签名
        request.putQueryParameter("SignName", "阿里云");
//      短信模板,须申请,使用申请成功的短信模板的模版CODE
        request.putQueryParameter("TemplateCode", "SMS_10086***");
//      申请的短信模板中的变量code的值,如验证码,字符串格式必须为"{code:123051}",否则报错,123051由代码生成
        request.putQueryParameter("TemplateParam", "{code:123051}");
        try {
            CommonResponse response = client.getCommonResponse(request);
//          获取执行之后的信息,显示成功提示或者失败信息
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

 

你可能感兴趣的:(短信服务)