阿里云短信发送(单人,多人)

参数说明:

参数名参数说明说明单人多人
ACCESS_KEY_ID
ID需要自己申请(单人和多人一样)                  --------
ACCESS_KEY_SECRET
KEY

需要自己申请

单人和多人一样)

                  --------
setSysMethod
默认值
                  MethodType.POST
setSysDomain
短信服务的服务接入地址
默认值                  dysmsapi.aliyuncs.com
setSysVersion
API的版本号
默认值                 2017-05-25
setSysAction
短信发送接口
 
SendSms
SendBatchSms
putQueryParameter("参数", 值)
 
接收短信的手机号
 
PhoneNumbers
PhoneNumberJson
短信签名名称
需要和手机号保持相同的个数
SignName
SignNameJson
短信模板Code,注意这个模板要和签名对应
短信模板code
TemplateCode
TemplateCode
短信模板变量对应的实际值
需要和手机号保持相同的个数
TemplateParam
TemplateParamJson

单个短信发送

    /**
     * 发送短信 单个
     * @param phone 手机号
	 * @param name 模板中的数据
     * @return*/

    public static SmsAliYunUtilVo sentSms(String phone,String name) {
        SmsAliYunUtilVo smsAliYunUtilVo = new SmsAliYunUtilVo();
        try {
            //default 地域节点,默认就好;  后面是 阿里云的 id和秘钥
            DefaultProfile profile = DefaultProfile.getProfile("default", SmsParams.ACCESS_KEY_ID, SmsParams.ACCESS_KEY_SECRET);
            IAcsClient client = new DefaultAcsClient(profile);
            //这里不能修改
            CommonRequest request = new CommonRequest();
            request.setSysMethod(MethodType.POST);
            //短信服务的服务接入地址
            request.setSysDomain(SmsParams.DOMAIN);
            //API的版本号
            request.setSysVersion("2017-05-25");
            //接收短信的手机号码
            request.setSysAction("SendSms");
            //API的名称
            request.putQueryParameter("PhoneNumbers", phoneNumbers);
            // 短信签名名称
            request.putQueryParameter("SignName", SmsParams.SIGN_NAME);
            //  短信模板Code,注意这个模板要和签名对应
            request.putQueryParameter("TemplateCode", SmsParams.TEMPLATE_CODE);
            //短信模板变量对应的实际值
            request.putQueryParameter("TemplateParam", "{\"name\":\"" + name + "\"}");
            try {
                CommonResponse response = client.getCommonResponse(request);
                System.out.println(response.getData());
                String infojson = response.getData();
                Gson gson2 = new Gson();
                Map map = gson2.fromJson(infojson, Map.class);
                String message = map.get("Message").toString();
                String codes = map.get("Code").toString();
                System.out.println("codes="+codes);
                System.out.println("Message="+message);
                smsAliYunUtilVo.setCode(codes);
                smsAliYunUtilVo.setMessage(message);
            }catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  smsAliYunUtilVo;
    }

群发短信

/**
 * 发送短信 群体
 * 注: 手机号,签名名称,模板参数等改为集合形式传参,并且集合中的签名名称数量,模板参数数量必须和手机号数量保持一致!!! 并且 模板code必须和模板参数保持一致!!!
 * @param
 * @param param1 模板中的参数1
 * @param param2 模板中的参数2
 * @param param3 模板中的参数3
 * @return*/

public static SmsAliYunUtilVo sentSmsUsers(List<String> list, String param1, String param2, String  param3) {
    SmsAliYunUtilVo smsAliYunUtilVo = new SmsAliYunUtilVo();
    ObjectMapper objectMapper = new ObjectMapper();
    Gson gson = new Gson();
    try {
        String phone=gson.toJson(list);
        //拼接数据
        String[]  SignNameJson=new String[list.size()];
        List<SmsAliYunObj>  smsAliYunObjList= new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            SmsAliYunObj smsAliYunObj= new SmsAliYunObj();
            smsAliYunObj.setParam1(param1);
            smsAliYunObj.setParam2(param2);
            smsAliYunObj.setParam3(param3);
            smsAliYunObjList.add(smsAliYunObj);
            SignNameJson[i]=SmsParams.SIGN_NAME;
        }
        String jsonPhone = objectMapper.writeValueAsString(list);
        String jsonSmsAliYunObjList = objectMapper.writeValueAsString(smsAliYunObjList);
        String jsonSignName = objectMapper.writeValueAsString(SignNameJson);

        //default 地域节点,默认就好;  后面是 阿里云的 id和秘钥
        DefaultProfile profile = DefaultProfile.getProfile("default", SmsParams.ACCESS_KEY_ID, SmsParams.ACCESS_KEY_SECRET);
        IAcsClient client = new DefaultAcsClient(profile);
        //这里不能修改
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        //短信服务的服务接入地址
        request.setSysDomain(SmsParams.DOMAIN);
        //API的版本号
        request.setSysVersion("2017-05-25");
        //接收短信的手机号码
        request.setSysAction("SendBatchSms");
        //API的名称
        request.putQueryParameter("PhoneNumberJson", jsonPhone);
        // 短信签名名称
        request.putQueryParameter("SignNameJson", jsonSignName);
        //  短信模板Code,注意这个模板要和签名对应
        request.putQueryParameter("TemplateCode", SmsParams.TEMPLATE_CODE);
        //短信模板变量对应的实际值
        request.putQueryParameter("TemplateParamJson", jsonSmsAliYunObjList);
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            String infojson = response.getData();
            Gson gson2 = new Gson();
            Map map = gson2.fromJson(infojson, Map.class);
            String message = map.get("Message").toString();
            String codes = map.get("Code").toString();
            smsAliYunUtilVo.setCode(codes);
            smsAliYunUtilVo.setMessage(message);
        }  catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
        return  smsAliYunUtilVo;
    }

    return  smsAliYunUtilVo;
}

工具类(可以配置到XML文件中)

package java.untis;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Slf4j
@Data
@Component
@ConfigurationProperties(prefix = "config")
public class SmsParams implements InitializingBean {

    @Value("${config.SmsAccessKeyId}")
    private String smsAccessKeyId;

    @Value("${config.SmsAccessKeySecret}")
    private String smsAccessKeySecret;

    @Value("${config.SmsSignName}")
    private String smsSignName;

    @Value("${config.Smsdomain}")
    private String smsdomain;

    @Value("${config.SmstTmplateCode}")
    private String smstTmplateCode;


    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String SIGN_NAME;
    public static String DOMAIN;
    public static String TEMPLATE_CODE;

    @Override
    public void afterPropertiesSet() throws Exception {
        ACCESS_KEY_ID=smsAccessKeyId;
        ACCESS_KEY_SECRET=smsAccessKeySecret;
        SIGN_NAME=smsSignName;
        DOMAIN=smsdomain;
        TEMPLATE_CODE=smstTmplateCode;
    }

}

组装模板参数的实体

package Java.untis;

import lombok.Data;
/**
*申请的模板里面的参数
*/
@Data
public class SmsAliYunObj {
    private String param1;
    private String param2;
    private String param3;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值