2021-11-08 阿里云发送短信源码

1.控制层
private String newcode;

public String getNewcode() {
    return newcode;
}

public void setNewcode(String newcode) {
    this.newcode = newcode;
}
@ResponseBody
@RequestMapping(value = "/sendSms")
public Map<String, Object> sendSms(String phone) throws ClientException {
    Map<String, Object> resultMap = new HashMap<>();
    if (phone.isEmpty() && phone.length() == 11) {
        resultMap.put("code", 400);
        resultMap.put("msg", "手机号格式错误");
    }
    String code = Integer.toString((int) (Math.random() * 9999) + 100);
    setNewcode(code);
    System.out.println("发送的验证码为:" + code);
    //发短信
    SendSmsResponse response = sendSmsDemo.sendSms(phone, code); // TODO 填写你需要测试的手机号码
    System.out.println("短信接口返回的数据----------------");
    System.out.println("Code=" + response.getCode());
    System.out.println("Message=" + response.getMessage());
    System.out.println("RequestId=" + response.getRequestId());
    System.out.println("BizId=" + response.getBizId());

    if (response.getCode().equals("OK")) {
        resultMap.put("code", 200);
        resultMap.put("msg", code);

    } else {
        resultMap.put("code", 400);
        resultMap.put("msg", "发送失败");
    }
    return resultMap;
}

2.逻辑层

/**
  • 发送短信
    */
    @Service
    public class SendSmsDemo {

    //
    //
    // /**
    // * 阿里云短信服务:
    // * 注意:需要 签名名称、模版CODE 以及 RAM访问控制中的 AccessKeyID 和 AccessKeySecret
    // */
    //

     //产品名称:云通信短信API产品,开发者无需替换
     static final String product = "Dysmsapi";
     //产品域名,开发者无需替换
     static final String domain = "dysmsapi.aliyuncs.com";
    
     // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
     static final String accessKeyId = "";  // TODO 修改成自己的
    
     static final String accessKeySecret = "";   // TODO 修改成自己的
    
    
     public  SendSmsResponse sendSms(String telephone, String code) throws ClientException {
         //可自助调整超时时间
         System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
         System.setProperty("sun.net.client.defaultReadTimeout", "10000");
         //初始化acsClient,暂不支持region化
    
         IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        // DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
         IAcsClient acsClient = new DefaultAcsClient(profile);
    
         //组装请求对象-具体描述见控制台-文档部分内容
         SendSmsRequest request = new SendSmsRequest();
    
         //使用post提交
         request.setMethod(MethodType.POST);
         //必填:待发送手机号
         request.setPhoneNumbers(telephone);
         //必填:短信签名-可在短信控制台中找到
         request.setSignName("");    // TODO 修改成自己的
         //必填:短信模板-可在短信控制台中找到
         request.setTemplateCode("");    // TODO 修改成自己的
         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
         //request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
         request.setTemplateParam("{\"code\":\"" + code + "\"}");
         //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
         //request.setSmsUpExtendCode("90997");
         //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
    //     request.setOutId("yourOutId");
         //hint 此处可能会抛出异常,注意catch
    
         SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
         if(sendSmsResponse.getCode()!= null && sendSmsResponse.getCode().equals("OK")){
             System.out.println("短信发送成功!");
         }else {
             System.out.println("短信发送失败!");
         }
         return sendSmsResponse;
    
     }
    

    }

模板需要自己去阿里云配置,阿里云也有已经写好的Java模板。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值