zoukankan      html  css  js  c++  java
  • 阿里云短信服务工具类

    application.yml:

     去阿里云短信服务模块自己申请

    accessKeyId:
    accessKeySecret:

    编写配置类读取配置文件

    @ConfigurationProperties(prefix = "ximen.sms")
    @Component
    public class SmsProperties {
        private String accessKeyId;
        private String accessKeySecret;
        private String signName;
        private String verifyCodeTemplate;
    
        public String getAccessKeyId() {
            return accessKeyId;
        }
    
        public void setAccessKeyId(String accessKeyId) {
            this.accessKeyId = accessKeyId;
        }
    
        public String getAccessKeySecret() {
            return accessKeySecret;
        }
    
        public void setAccessKeySecret(String accessKeySecret) {
            this.accessKeySecret = accessKeySecret;
        }
    
        public String getSignName() {
            return signName;
        }
    
        public void setSignName(String signName) {
            this.signName = signName;
        }
    
        public String getVerifyCodeTemplate() {
            return verifyCodeTemplate;
        }
    
        public void setVerifyCodeTemplate(String verifyCodeTemplate) {
            this.verifyCodeTemplate = verifyCodeTemplate;
        }
    }

    发送短信工具类:

    /**
     * @Feature: 短信服务工具类
     */
    @Component
    public class SmsUtils {
    
        @Autowired
        private SmsProperties properties;
    
        /**
         * 产品名称:云通信短信API产品,开发者无需替换
         */
        static final String product = "Dysmsapi";
        /**
         * 产品域名,开发者无需替换
         */
        static final String domain = "dysmsapi.aliyuncs.com";
    
        static final Logger logger = LoggerFactory.getLogger(SmsUtils.class);
    
        public  SendSmsResponse sendSms(String phone,String code,String signName,String template) throws ClientException {
    
            //可自助调整超时时间
            System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
            System.setProperty("sun.net.client.defaultReadTimeout", "10000");
    
            //初始化acsClient,暂不支持region化
            IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", properties.getAccessKeyId(), properties.getAccessKeySecret());
            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);
    
            //组装请求对象-具体描述见控制台-文档部分内容
            SendSmsRequest request = new SendSmsRequest();
            request.setMethod(MethodType.POST);
            //必填:待发送手机号
            request.setPhoneNumbers(phone);
            //必填:短信签名-可在短信控制台中找到
            request.setSignName(signName);
            //必填:短信模板-可在短信控制台中找到
            request.setTemplateCode(template);
            //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
            request.setTemplateParam("{"code":"" + code + ""}");
    
            //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
            //request.setSmsUpExtendCode("90997");
    
            //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
            request.setOutId("123456");
    
            //hint 此处可能会抛出异常,注意catch
            SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
    
            return sendSmsResponse;
        }
    }

    依赖:

           <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-core</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
                <version>1.1.0</version>
            </dependency>        
  • 相关阅读:
    浏览器漫谈
    无尽的烦恼
    微软的无聊
    作软件的人永远都是受气包吗?
    除非迫不得已不要用游标
    公司进行改革,路该如何走?
    Performance best practices for Web services
    HowTO: Create an Event Log Source in code, without the Permission errors
    Team Foundation Server安装指南
    百年不遇的,我遇到了两次
  • 原文地址:https://www.cnblogs.com/yscec/p/12285877.html
Copyright © 2011-2022 走看看