我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于springboot集成阿里云短信的问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于springboot集成阿里云短信的问题

在这里插入图片描述

1.获取签名与模板

进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格)

在这里插入图片描述

2.编写模板与签名的枚举类

在上文获取模板与签名成功后,并作为常量放在枚举类中。


public enum DySmsEnum {

    
    LOGIN_TEMPLATE_CODE("SMS_187570276", "自定义软件框架集成百度云", "code");

    
    private String templateCode;
    
    private String signName;
    
    private String keys;

    private DySmsEnum(String templateCode, String signName, String keys) {
        this.templateCode = templateCode;
        this.signName = signName;
        this.keys = keys;
    }

    public String getTemplateCode() {
        return templateCode;
    }

    public void setTemplateCode(String templateCode) {
        this.templateCode = templateCode;
    }

    public String getSignName() {
        return signName;
    }

    public void setSignName(String signName) {
        this.signName = signName;
    }

    public String getKeys() {
        return keys;
    }

    public void setKeys(String keys) {
        this.keys = keys;
    }

    public static DySmsEnum toEnum(String templateCode) {
        if (StringUtils.isEmpty(templateCode)) {
            return null;
        }
        for (DySmsEnum item : DySmsEnum.values()) {
            if (item.getTemplateCode().equals(templateCode)) {
                return item;
            }
        }
        return null;
    }
}

3.配置类

这里面需要两个参数accessKeyId,accessKeySecret,需要在以下位置获取。

在这里插入图片描述
在这里插入图片描述


import com.alibaba.fastjson.JSONObject;
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;
import com.vanpeng.systemportal.modules.dysms.constant.DySmsEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Component
public class DySmsHelper {

    private final static Logger logger = LoggerFactory.getLogger(DySmsHelper.class);

    //产品名称:云通信短信API产品,无需替换
    static final String product = "Dysmsapi";
    //产品域名,无需替换
    static final String domain = "dysmsapi.aliyuncs.com";

    //此处需要替换成开发者自己的AK(在阿里云访问控制台寻找 本类需要修改此处)
    static  String accessKeyId;
    static  String accessKeySecret;

    public static void setAccessKeyId(String accessKeyId) {
        DySmsHelper.accessKeyId = accessKeyId;
    }

    public static void setAccessKeySecret(String accessKeySecret) {
        DySmsHelper.accessKeySecret = accessKeySecret;
    }

    public static String getAccessKeyId() {
        return accessKeyId;
    }

    public static String getAccessKeySecret() {
        return accessKeySecret;
    }

    public boolean sendSms(String phone, JSONObject templateParamJson, DySmsEnum dySmsEnum) 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);
        //验证json参数
        validateParam(templateParamJson, dySmsEnum);
        //组装请求对象-具体描述见控制台-文档部分内容
        SendSmsRequest request = new SendSmsRequest();
        //必填:待发送手机号
        request.setPhoneNumbers(phone);
        //必填:短信签名-可在短信控制台中找到
        request.setSignName(dySmsEnum.getSignName());
        //必填:短信模板-可在短信控制台中找到
        request.setTemplateCode(dySmsEnum.getTemplateCode());
        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为$[code]"时,此处的值为
        request.setTemplateParam(templateParamJson.toJSONString());
        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
        //request.setSmsUpExtendCode("90997");
        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        //request.setOutId("yourOutId");
        boolean result = false;
        //hint 此处可能会抛出异常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
        logger.info("短信接口返回的数据----------------");
        logger.info("{Code:" + sendSmsResponse.getCode() + ",Message:" + sendSmsResponse.getMessage() + ",RequestId:" + sendSmsResponse.getRequestId() + ",BizId:" + sendSmsResponse.getBizId() + "}");
        if ("OK".equals(sendSmsResponse.getCode())) {
            result = true;
        }
        return result;
    }

    private static void validateParam(JSONObject templateParamJson, DySmsEnum dySmsEnum) {
        String keys = dySmsEnum.getKeys();
        String[] keyArr = keys.split(",");
        for (String item : keyArr) {
            if (!templateParamJson.containsKey(item)) {
                throw new RuntimeException("模板缺少参数:" + item);
            }
        }
    }
}

4.测试类

使用postman或者其他方式调用即可发送短信。


@RestController
@RequestMapping("/SendSmsControllor")
public class SendSmsControllor {

    @Autowired
    DySmsHelper dySmsHelper;

    @RequestMapping("/sendSms")
    public void sendSms() throws ClientException {
        JSONObject obj = new JSONObject();
        obj.put("code", "1234");
        dySmsHelper.sendSms("电话号", obj, DySmsEnum.LOGIN_TEMPLATE_CODE);
    }
}

注意:一定要往账户中充钱或者办理套餐,否则短信发不出去的。

到此这篇关于springboot集成阿里云短信的文章就介绍到这了,更多相关springboot阿里云短信内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于springboot集成阿里云短信的问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于阿里云短信发送的一个问题

使用阿里云的短信服务时, 需要下载sdk, 现有以下两个版本的sdk:aliyun-python-sdk-core-v3==2.9.1aliyun-python-sdk-core-v3==2.8.6在python3.6中使用短信服务的以下代
2023-01-31

Springboot实现阿里云通信短信服务有关短信验证码的发送功能

前言短信验证码是通过发送验证码到手机的一种有效的验证码系统。主要用于验证用户手机的合法性及敏感操作的身份验证。现在市面上的短信服务平台有很多。大家在选择的时候未免会有些不好抉择。本人建议选择短信服务商应遵循以下几点: 服务商知名度高,业务
2023-05-31

关于Android发送短信获取送达报告的问题(推荐)

最近公司开发一个项目,要求app能够发送短信并获取送达报告。这本不是一个什么难题,实现这一功能的代码一搜一大把,那么这么简单的一个问题,为什么我要在这里提出来呢?那是因为我在写代码的时候掉入了一个坑,而且这很可能发生在很多和我一样粗心的朋友
2022-06-06

关于阿里云服务器的问题有哪些呢

关于阿里云服务器的问题包括但不限于:如何购买阿里云服务器、阿里云服务器的性能如何、阿里云服务器的价格是多少、阿里云服务器的稳定性如何、阿里云服务器的使用教程、阿里云服务器的维护和管理方法等。这些问题是每个用户在使用阿里云服务器时都可能会遇到的问题,因此了解这些问题并找到解决办法非常重要。首先,购买阿里云服务器非常简单,
关于阿里云服务器的问题有哪些呢
2024-01-25

关于阿里云服务器的问和建议

本文旨在探讨阿里云服务器的问题和建议,帮助用户更好地理解和使用阿里云服务器。我们将深入分析阿里云服务器的性能、安全性和稳定性,以及如何解决常见的问题和提高服务器效率。正文:一、阿里云服务器的问题性能问题:有时,用户可能会发现阿里云服务器的响应速度较慢,这可能是由于网络连接问题、服务器负载过高或硬件故障等原因引起的
关于阿里云服务器的问和建议
2023-10-28

关闭阿里云服务器到期提醒短信的步骤说明

本文将详细说明如何关闭阿里云服务器到期提醒短信,以避免不必要的骚扰和信息泄露。在日常生活中,我们经常使用各种云服务,其中阿里云服务器是非常常见的一种。然而,随着时间的推移,我们会发现一些服务器可能会到期,这可能会导致一些不便和麻烦。为了避免这种情况,我们需要及时关闭阿里云服务器到期提醒短信。那么,如何关闭呢?本文
关闭阿里云服务器到期提醒短信的步骤说明
2023-11-18

阿里云服务器关于挂广告的合法性问

在互联网时代,各种形式的广告无处不在,阿里云服务器作为一个提供网络服务的平台,是否允许用户在服务器上挂广告呢?本文将深入探讨这一问题。正文:阿里云服务器作为提供网络服务的平台,用户可以利用阿里云服务器搭建网站、部署应用等。然而,关于用户是否可以在阿里云服务器上挂广告,一直以来都有很多争议。那么,阿里云服务器到底是
阿里云服务器关于挂广告的合法性问
2023-11-03

解决阿里云ssh远程连接短时间就会断掉的问题

问题重现 阿里云服务器,使用Finalshell远程连接,在操作中没有出现任务异常,只要远程连接过程中没有了操作,过一会服务器就会断开。出现无法在输入框里敲入命令,需要关掉当前窗口重连。 问题分析 一般这种问题,我们先http://www.
2022-06-04

阿里云ECS部署Redis主备哨兵集群遇到的问题

一、部署详细部署步骤:https://blog.csdn.net/lihongtai/article/details/82826809Redis5.0版本需要注意的参数配置:https://www.cnblogs.com/ibethfy/p/9965902.h
2014-07-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录