aliyun短信及短信模板操作

短信模板管理

管理接口

  • 申请短信模板:AddSmsTemplate
  • 删除短信模板:DeleteSmsTemplate
  • 修改未通过审核的短信模板:ModifySmsTemplate
  • 查询短信模板的审核状态:QuerySmsTemplate

sdk引用


<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.16</version>
</dependency>

工程变量配置

yml:

aliyun:
  sms:
    access-key-id: 111111111111111111
    access-key-secret: 2222222222222222222222222
    sign-name: 云中科技

源码引用变量:


    @Value("${aliyun.sms.access-key-id}")
    private String accessKeyId;

    @Value("${aliyun.sms.access-key-secret}")
    private String accessKeySecret;

    @Value("${aliyun.sms.sign-name}")
    private String signName;
    
    private String sysVersion = "2017-05-25";

    private String sysDomain = "dysmsapi.aliyuncs.com";

申请短信模板

 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(sysDomain);
        request.setSysVersion(sysVersion);
        request.setSysAction("AddSmsTemplate");
        request.putQueryParameter("TemplateType", String.valueOf(defaultTemplateType));
        request.putQueryParameter("TemplateName", template.getTemplateName());
        request.putQueryParameter("TemplateContent", template.getTemplateContent());
        request.putQueryParameter("Remark", template.getRemark());
        CommonResponse response;
        try {
            response = client.getCommonResponse(request);
        } catch (Exception e) {
            logger.error(e.getLocalizedMessage(), e);
            throw new ApiException(e.getLocalizedMessage());
        }
        logger.info(response.getData());
        CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);
        if ("OK".equals(responseData.getCode())) {

        } else {
            logger.error(response.getData());

        }

返回结果:


@Getter
@Setter
public class CmsSmsResponse {

    private String Code;

    private String Message;

    private String RequestId;

    private String TemplateCode;
}

查询模板信息

 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(sysDomain);
        request.setSysVersion(sysVersion);
        request.setSysAction("QuerySmsTemplate");
        request.putQueryParameter("TemplateCode", template.getTemplateCode());
        CommonResponse response;
        try {
            response = client.getCommonResponse(request);
        } catch (ClientException e) {
            logger.error(e.getLocalizedMessage(), e);
            throw new ApiException(e.getLocalizedMessage());
        }
        logger.info(response.getData());
        CmsSmsQueryResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsQueryResponse.class);
        if ("OK".equals(responseData.getCode())) {
            
        } else {
            logger.error(response.getData());
        }

返回结果:


@Getter
@Setter
public class CmsSmsResponse {

    private String Code;

    private String Message;

    private String RequestId;

    private String TemplateCode;
}
@Getter
@Setter
public class CmsSmsQueryResponse extends CmsSmsResponse {

    private String TemplateContent;

    private Integer TemplateStatus;

    private Integer TemplateType;

    private String TemplateName;

    private String CreateDate;

    private String Reason;

}

更新审核未通过的模板


        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);

        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(sysDomain);
        request.setSysVersion(sysVersion);
        request.setSysAction("ModifySmsTemplate");
        request.putQueryParameter("TemplateType", "2");
        request.putQueryParameter("TemplateName", template.getTemplateName());
        request.putQueryParameter("TemplateCode", template.getTemplateCode());
        request.putQueryParameter("TemplateContent", template.getTemplateContent());
        request.putQueryParameter("Remark", template.getRemark());
        CommonResponse response;
        try {
            response = client.getCommonResponse(request);
        } catch (ClientException e) {
            logger.error(e.getLocalizedMessage(), e);
            throw new ApiException(e.getLocalizedMessage());
        }
        logger.info(response.getData());
        CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);
        if ("OK".equals(responseData.getCode())) {
 
        } else {
            logger.error(response.getData());
        }

结果:

@Getter
@Setter
public class CmsSmsResponse {

    private String Code;

    private String Message;

    private String RequestId;

    private String TemplateCode;
}

删除模板


        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(sysDomain);
        request.setSysVersion(sysVersion);
        request.setSysAction("DeleteSmsTemplate");
        request.putQueryParameter("TemplateCode", template.getTemplateCode());
        CommonResponse response;
        try {
            response = client.getCommonResponse(request);
        } catch (ClientException e) {
            logger.error(e.getLocalizedMessage(), e);
            throw new ApiException(e.getLocalizedMessage());
        }
        logger.info(response.getData());
        CmsSmsResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsResponse.class);
        if ("OK".equals(responseData.getCode())) {
        } else {
            logger.error(response.getData());
        }

结果:

@Getter
@Setter
public class CmsSmsResponse {

    private String Code;

    private String Message;

    private String RequestId;

    private String TemplateCode;
}

发送短信

  • 发送短信:SendSms

批量发送需要限制大小200

 
        List<String> phones = ...

        CmsSmsTemplate template = ...
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        int fromIndex = 0;
        int toIndex = phones.size() > batchCount ? batchCount : phones.size();
        while (fromIndex < phones.size()) {
            List<String> subPhoneList = phones.subList(fromIndex, toIndex);

            CommonRequest request = new CommonRequest();
            request.setSysMethod(MethodType.POST);
            request.setSysDomain(sysDomain);
            request.setSysVersion(sysVersion);
            request.setSysAction("SendBatchSms");
            request.putQueryParameter("PhoneNumberJson", JSONUtil.toJsonStr(subPhoneList));
            List<String> signNames = Lists.newArrayList();
            for (int i = 0; i < subPhoneList.size(); i++) {
                signNames.add(signName);
            }
            request.putQueryParameter("SignNameJson", JSONUtil.toJsonStr(signNames));
            request.putQueryParameter("TemplateCode", template.getTemplateCode());
            CommonResponse response;
            try {
                response = client.getCommonResponse(request);
            } catch (ClientException e) {
                logger.error("failed to send message form {} to {}", fromIndex, toIndex);
                logger.error(e.getLocalizedMessage(), e);
                continue;
            }
            logger.info(response.getData());
            CmsSmsQueryResponse responseData = JSONUtil.toBean(response.getData(), CmsSmsQueryResponse.class);
            if (!"OK".equals(responseData.getCode())) {
                logger.error("failed to send message form {} to {}", fromIndex, toIndex);
                logger.error(response.getData());
            } else {
                logger.info("success to send message form {} to {}", fromIndex, toIndex);
            }

            fromIndex += batchCount;
            toIndex += batchCount;
            toIndex = phones.size() > toIndex ? toIndex : phones.size();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值