阿里云短信服务-个人账户测试短信服务_dysmsapi.aliyuncs.com_Diamond778的博客-程序员秘密

技术标签: 阿里云  后端开发  

前言

阿里的短信服务分为三块,一是阿里云短信服务,二是云通讯,三是阿里大于,不过后期都会统一到阿里云短信服务平台的,所以这里只需要学习如何使用阿里云短信服务就可以了。
如果是个人开发者,项目呢还没上线,项目中还需要用到短信服务,想熟悉一下短信服务的代码调用,那看这个教程就对了。

一、免费开通短信服务

传送门

注册登录,然后点击免费开通
在这里插入图片描述

二、创建AccessKey

在这里插入图片描述

这里一定要把AccessKeyId和AccessKeySecret 记录下来!!!

AccessKeyId AccessKeySecret
xxxxx xxxxx

三、创建签名

在这里插入图片描述
这里的签名名称建议使用ABC商城,使用其他的审核不容易通过。适用场景选择验证码,不要选择通用!!!因为选择通用要上传一大堆东西,太麻烦。

四、创建模板

在这里插入图片描述建议就和这个一样,变量只支持一个,模板类型一定选“验证码”。否则审核很难通过。

五、编码

发送内容实体类

短信服务中的变量及其值要以json字符串的形式作为参数传入,因为拼接字符串太过麻烦,这里建议使用实体类转json字符串的形式。

/**
 * 短信内容VO类
 */
@Data
public class AliyunSmsVO1 {
    
    private String code;    // 验证码
}

发送短信工具类

/**
 * 阿里云短信服务工具类
 */
public class AliyunSmsUtils {
    
    public AliyunSmsUtils() {
    
        super();
    }

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

    // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
    static final String accessKeyId = "xxxxxx"; // TODO 修改成自己的accessKeyId
    static final String accessKeySecret = "xxxxxx"; // TODO 修改成自己的accessKeySecret
    static final String signName = "ABC商城";
    static final String templateCode = "SMS_206548955";

    /**
     * 发送短信
     * @param telephone 发送的手机号码
     * @param content 发送的内容,json字符串
     * @return
     * @throws ClientException
     */
    public static SendSmsResponse sendSms(String telephone,String content) 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();
        //必填:待发送手机号
        request.setPhoneNumbers(telephone);
        //必填:短信签名-可在短信控制台中找到
        request.setSignName(signName); // TODO 修改成自己的签名
        //必填:短信模板-可在短信控制台中找到
        request.setTemplateCode(templateCode); // TODO 修改成自己的模板CODE
        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为"{\"code\":\"123456\"}"
        request.setTemplateParam(content);
        //可选: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;
    }
  
    public static void main(String[] args) throws ClientException, InterruptedException {
    
        AliyunSmsVO1 aliyunSmsVO1 = new AliyunSmsVO1();
        aliyunSmsVO1.setCode("11111");
        String s = JSONObject.toJSONString(aliyunSmsVO1);
        //发短信
        SendSmsResponse response =sendSms("xxxxx",s); // 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());
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41497658/article/details/110930004

智能推荐

通过js正则表达式 限制input 输入框只能输入整数、小数(金额或者现金)_Huangwen6的博客-程序员秘密

HTML代码:<input onkeyup="onlyNumber(this)" onblur="onlyNumber(this)" />js代码://强制限制只能输入数字function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都替换掉,除了数字和. obj.value =...

Vue根据浏览器窗体变化动态设置Element Table组件的最大高度_vue 最大高度_我是ed.的博客-程序员秘密

Vue根据浏览器窗体变化动态设置Element Table组件的最大高度这个场景应该经常遇到,比如说在一个页面有一个table,想让他数据过多的时候自动出现滚动条而不至于冲到屏幕外被隐藏,如果表格下面还有换页的话,换页直接冲没了,所以需要计算这个table表格的最大高度。使用的是饿了吗Element组件库的table组件,有一个属性是 max-height ,设置表格的最大高度,高出自动出现纵向滚动条。<el-table :data="dataList" :max-height="m

问题 1840: [蓝桥杯][2015年第六届真题]赢球票_~ 知至~的博客-程序员秘密

问题 1840: [蓝桥杯][2015年第六届真题]赢球票时间限制: 1Sec 内存限制: 128MB 提交: 160 解决: 84题目描述某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。主持人拿出 N 张卡片(上面写着 1~N 的数字),打乱顺序,排成一个圆圈。你可以从任意一张卡片开始顺时针数数: 1,2,3.....如果数到的数字刚好和卡片上的数字相同,则把该卡片收入囊中...

在html中加入文本编辑器,富文本编辑器嵌入指定html代码_隔壁老祁的博客-程序员秘密

先把内容放入一个input中然后判断是插入还是修改如果是修改才会向富文本编辑器中嵌入html代码UE.getEditor("chvGoodsRemark", {autoClearinitialContent:false,wordCount:true,elementPathEnabled:true,autoHeightEnabled:false,maximumWords:0,fullscreen:f...

android adb 命令_kyle_ren的博客-程序员秘密

Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信 获取序列号: adb get-serialno查看连接计算机的设备: adb devices重启机器: adb reboot重启到bootloader,即刷机模式: adb reboot bootload

证书_安装之三_(Windows Server 2008 R2 SP1英文版)_weixin_34072857的博客-程序员秘密

接上一章<额外域控制器_安装之二_(WindowsServer2008R2SP1英文版)>!在这章中,我们学习如何在DC01上安装证书服务角色!1.我们登陆到DC01服务器,打开ServerManager--Add&Roes角色,选择以下功能并点击Next!2.保持默认点击Next!3.注意选中以下内容,因为我们可以放便通过WEB方式申请!4.保持默认不变...

随便推点

springcloud学习笔记之Feign组件_liushangzaibeijing的博客-程序员秘密

springClound有关feign的分析,作者从示例开头一步一步帮你揭开feign的神秘面纱。作者从四个方面阐述springClound的feign组件 1、feign的概念以及使用实例 2、通过@EnableFeignClient注解 分析了feign和spring结合的原理 3、通过@FeignClient注解,分析feign如何使用希望能给你在学习springClound的过程中带来一些帮助。

Spring Boot项目集成阿里云短信回执_奋斗的山核桃的博客-程序员秘密

前段时间,项目中需要使用阿里云短信以及短信回执,在这里记录一下遇到的问题以及解决方案。首先,调用阿里云的短信API,返回类型是SendSmsResponse,格式如下。Code表示调用API的返回值,具体错误码参考官网[API错误码]。当Code为OK时表示调用API成功,但这并不表示接收方收到该条短信,这时候需要查看短信发送回执,也就是订阅SmsReport短信状态报告,获取短信发送状态。...

java 判断文件损坏_Java校验文件是否损坏_weixin_39731782的博客-程序员秘密

经常在程序操作文件时,遇到文件以及损坏的问题,那么如何校验文件是否损坏呢?这就需要Apache Tika包了,maven引用如下:org.apache.tikatika-parsers1.16org.apache.tikatika1.16pomorg.apache.tikatika-core1.16使用方法:try {Tika tika = new Tika();URL url = new URL...

Java实现Excel数据导入数据库_java导入excel到数据库_柚几哥哥的博客-程序员秘密

1、根据业务需求设计数据库表2、根据数据库表设计一个Excel模板模板的每列属性必须与表字段一一对应3、环境准备我这里项目环境是基于SpringBoot单体式架构,持久层用的公司框架,内置了基于MyBatis-Plus的各种单表操作的方法。导入依赖 <!--使用POI读取文件--> <dependency> <groupId>org.apache.poi</groupId>

Python第五课---详解字典、集合、序列_ceymaomao的博客-程序员秘密

1 字典1.1 可变类型与不可变类型序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可

Vue-cli3以上版本怎么配置Webpack_vue cli vue3 选择webpack版本_橙子微笑的博客-程序员秘密

Vue-cli3以上版本怎么配置Webpackvue-cli3以下版本中,关于webpack的一些配置都在config目录文件中,可是vue-cli3以上版本中,没有了config目录,那该怎么配置webpack呢?这时,vue-cli给我们提供了一个可选的配置文件(但需要我们自己手动创建哦vue.config.js,跟package.js同级)看下vue.config.js中常用的配置module.exports = {}publicPath:部署应用包的基本Url,默认/, 可以设置为

推荐文章

热门文章

相关标签