• ~随笔A019~使用阿里|云通信进行短信通知


      如今,在中国大陆,位于三大运营商之下的各种短信平台,综合各短信平台的费用、到达效率等评估,这里采用阿里短信平台最为核算。

    阿里云通信前身是阿里大鱼,后与阿里合并更名为阿里云通信。

      1.创建阿里云账号

      2.获取阿里云访问密钥

       3.签名管理

      4.模板管理

     

      5.加载依赖的jar包(此处以maven项目为例,如是常规java或Javaweb项目,直接放在WEB-INF/lib下)

             <dependency>
                 <groupId>com.aliyun</groupId>
                 <artifactId>aliyun-java-sdk-core</artifactId>
                 <version>3.2.6</version>
             </dependency>
             <dependency>
                 <groupId>com.aliyun</groupId>
                 <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
                 <version>1.0.0</version>
             </dependency>

      6.java后端代码演示

    package com.jeecg.utils;
    
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
    import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.IClientProfile;
    
    public class AliMessageSend {
    
        // 产品名称:云通信短信API产品,开发者无需替换
        private static final String product = "Dysmsapi";
        // 产品域名,开发者无需替换
        private static final String domain = "dysmsapi.aliyuncs.com";
    
        // 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
        // private static String mobile = "15811543044";
        private static String accessKeyId = "LTAIcxqEMCaetlSH";
        private static String accessKeySecret = "Jd7xsOrqGqXvLoup8iE5QmSN94GbxU";
        private static String signName = "英大清源";
        private static String templeteCode = "SMS_130845637";// "短信模版Code(一般都是SMS_********格式)";
    
        // 调用短信接口
        /*
         * public static void main(String[] args) { try { sendSms(); } catch
         * (ClientException e) { System.out.println(e); } }
         */
    
        // 发送短信方法
        public static SendSmsResponse sendSms(String mobile, String name, 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-beijing", accessKeyId, accessKeySecret);
            DefaultProfile.addEndpoint("cn-beijing", "cn-beijing", product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);
    
            // 组装请求对象-具体描述见控制台-文档部分内容
            SendSmsRequest request = new SendSmsRequest();
    
            // 必填:待发送手机号
            request.setPhoneNumbers(mobile);
            // 必填:短信签名-可在短信控制台中找到
            request.setSignName(signName);
            // 必填:短信模板-可在短信控制台中找到
            request.setTemplateCode(templeteCode);
    
            // 可选:模板中的变量替换JSON串,如模板内容为"尊敬的用户,您的验证码为${code}"时,此处的值为
            // String jsonParam = "{"code":"验证码"}";
            String jsonParam = "{"name":"" + name + "", "code":"" + code + ""}";
            request.setTemplateParam(jsonParam);
    
            // hint 此处可能会抛出异常,注意catch
            SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
    
            System.out.println("发送消息提示====" + sendSmsResponse.getMessage());
            return sendSmsResponse;
        }
    }

       7.通过以上步骤,我们的短信发送将成功显示到相应手机中。(显示如下图)

      备注:短信接口错误调研码地址如下:

      https://help.aliyun.com/KnowledgeDetail.htm?spm=5176.2020520129.113.2.8b2346ae8mu813&knowledgeId=57717

      

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/gaojl/p/8744248.html
Copyright © 2020-2023  润新知