阿里云短信服务(申请与代码)
目前阿里云短信签名审核更加严格了,如果不通过请转至《腾讯云短信申请与代码》,腾讯云简单易通过
记录申请短信服务签名的坑
短信服务签名申请注意事项:
自2020年12月17日开始,阿里云短信服务签名不能随便申请了,必须要有真实的网站名称、App、公众号、小程序主体,基本不对个人测试学习开放。本人这两天被拒绝了很多次,还好通过。我是有一个主体为本人的已经上线小程序,在提工单告诉售后工程师,提供证明小程序主体是本人的截图,先和售后工程师沟通好,然后再提交以上线小程序名字为短信签名。这样的话就可以申请通过。不然不提供任何证明是申请不通过的。这是最简单的学习方法,如果有自己备案的网站就更简单了。这个方法是给什么都没有的提供的。
短信模板就用系统默认的,随便选择一个,秒通过的
短信条数可以免费领取100条(三个月),做测试学习完全够用
编写代码
调用阿里云短信,返回成功将生成的验证码存入redis缓存中
pom.xml
<!-- redis 缓存操作 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- pool 对象池 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!--短信功能需要的jar包依赖--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.2.8</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>
application.yml
server:port: 9090#设置超时时间-可自行调整
sms:default:connect:timeout: sun.net.client.defaultConnectTimeoutread:timeout: sun.net.client.defaultReadTimeouttimeout: 10000##初始化ascClient需要的几个参数##短信API产品名称(短信产品名固定,无需修改)product: Dysmsapi#短信API产品域名(接口地址固定,无需修改)domain: dysmsapi.aliyuncs.com#accessKeyId accessKeySecretaccess:key:id: xxxxxxxxxxxxsecret: xxxxxxxxxx#模版CODEtemplate:code: xxxxxxxxsignname: "xxxxx"# redis 配置
spring:redis:# 地址host: localhost# 端口,默认为6379port: 6379# 数据库索引database: 0# 密码password: 123456# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 8# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms
MessageUtils.java
/*** @author zqing* @description: TODO* @date: 2020/12/23 14:29*/
@Component
public class MessageUtils {@AutowiredRedisCacheUtils redis;@Value("${sms.default.connect.timeout}")private String DEFAULT_CONNECT_TIMEOUT;@Value("${sms.default.read.timeout}")private String DEFAULT_READ_TIMEOUT;@Value("${sms.timeout}")private String SMS_TIMEOUT;@Value("${sms.product}")private String SMS_PRODUCT;@Value("${sms.domain}")private String SMS_DOMAIN;@Value("${sms.access.key.id}")private String SMS_ACCESSKEYID;@Value("${sms.access.key.secret}")private String SMS_ACCESSKEYSECRET;@Value("${sms.template.code}")private String TEMPLATE_CODE;@Value("${sms.signname}")private String SMS_SIGNNAME;//短信模板中的验证码的变量codeprivate static String code;public AjaxResult getPhoneMsg(String phone) {if (phone == null || phone == "") {System.out.println("手机号为空");return null;}// 设置超时时间-可自行调整System.setProperty(DEFAULT_CONNECT_TIMEOUT, SMS_TIMEOUT);System.setProperty(DEFAULT_READ_TIMEOUT, SMS_TIMEOUT);// 初始化ascClient需要的几个参数final String product = SMS_PRODUCT;final String domain = SMS_DOMAIN;// 替换成你的AKfinal String accessKeyId = SMS_ACCESSKEYID;final String accessKeySecret = SMS_ACCESSKEYSECRET;// 初始化ascClient,暂时不支持多regionIClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",accessKeyId, accessKeySecret);try {DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product,domain);//获取验证码code = vcode();IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象SendSmsRequest request = new SendSmsRequest();// 使用post提交request.setMethod(MethodType.POST);// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式request.setPhoneNumbers(phone);// 必填:短信签名-可在短信控制台中找到request.setSignName(SMS_SIGNNAME);// 必填:短信模板-可在短信控制台中找到request.setTemplateCode(TEMPLATE_CODE);// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为// 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败request.setTemplateParam("{ \"code\":\"" + code + "\"}");// 可选-上行短信扩展码(无特殊需求用户请忽略此字段)// request.setSmsUpExtendCode("90997");// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者//request.setOutId("yourOutId");// 请求失败这里会抛ClientException异常SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);if (sendSmsResponse.getCode() != null&& sendSmsResponse.getCode().equals("OK")) {// 请求成功//请求成功将验证码存入redisredis.setCacheObject("code",code,1, TimeUnit.MINUTES);return AjaxResult.success("发送短信验证码成功");} else {return AjaxResult.error(sendSmsResponse.getMessage());}} catch (Exception e) {e.printStackTrace();AjaxResult.error("获取短信验证码失败");}return null;}/*** 生成6位随机数验证码** @return*/public static String vcode() {String vcode = "";for (int i = 0; i < 6; i++) {vcode = vcode + (int) (Math.random() * 9);}return vcode;}}
源码: 下载
阿里云短信服务(申请与代码)相关推荐
- 阿里云短信服务实现免密登陆
使用阿里云的短信服务,实现免密登陆. 一. 阿里云短信服务申请. 1.首先,得有个阿里云账号,在控制台找到短信服务. 2. 在签名管理中根据步骤添加签名,这个之后就是你验证码短信中最开始的[]中的内容 ...
- 如何通过阿里云短信服务来发送验证码短信(超详细)
通过阿里云来创建自己产品的验证码 目录 通过阿里云来创建自己产品的验证码 前言: 一:注册阿里云账号 二:开通阿里云短信服务 三:测试类文件的编写 四:测试 后续:动态验证码的生成 前言: 短信验证码 ...
- SpringBoot-短信验证码-快速入门Demo(含redis)(手把手教你开通阿里云短信服务到写出个最终代码来)
B站小狂神-此博客的内容就是看了这个视频的总结(博主自己写的哦~并非转载) 视频链接-[狂神说]通俗易懂的阿里云短信业务实战教程(露脸) 您是否还在为别人的项目有短信功能自己的却没有? 您是否还在为自 ...
- 阿里云短信服务详细说明与实战开发后端代码
文章目录 1.短信服务背景 2.短信发送流程 3.阿里云短信服务基本说明 3.1 开通阿里云短信服务与购买短信套餐包 3.2 短信服务帮助文档 3.3 手机短信模板介绍 3.3.1 基本说明 3.3. ...
- 阿里云短信服务Java实现
文章目录 1.阿里云用户权限 2.开通阿里云短信服务 3.帮助文档 4.编写测试代码 真实项目应用 1.阿里云用户权限 阿里云平台有很多业务,用户登录阿里云之后,要想使用业务,必须开通该业务的权限 登 ...
- vue+springboot+阿里云短信服务(集成redis实现验证码登录业务)
阿里云短信服务-介绍 阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力.调用API或用群发助手,即可发送验证码.通知类和营销类短信:国内验 ...
- 单点登录常见解决方式和阿里云短信服务
1 单点登录(SSO) 三种常见方式: 1.1 第一种:session广播机制实现(已淘汰) 概念:就是session复制,一个模块登录后,该模块session存放用户登录信息,再把该session复 ...
- 阿里云短信服务初次试用
阿里云短信服务简单使用 提前声明,本人只是简单的试用了一下,终究还是止步于阿里复杂的业务逻辑(与开发无关,api还是很简单的),不仅又想起当年试用阿里的服务器时的场景,以及前几天阿里云出问题的新闻.. ...
- 阿里云短信服务的使用方法
本人个人博客地址https://www.lightingsui.com 介绍 最近由于项目的业务需要,想使用验证码登录系统,所以要找一个短信平台,第一目标就是阿里云的短信服务平台,说实话,之前在阿里云 ...
最新文章
- asp.net学习笔记·get与post区别
- CF 8D Two Friends (三分+二分)
- Azure正式对外发布容器服务,支持Swarm和Mesos
- 经验模式分解EMD算法原理
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
- 如何查看CO凭证号码及明细
- 为什么空格拷贝到linux 会变成两个
- kettle 内存设置_【转】kettle 的内存设置及输出日志的时间类型
- hibernate实战第二版 蒲成带目录_太NB了! 阿里程序员带你玩转Spring:脑图+实战五+面试百问+知识总结...
- 解构控制反转(IoC)和依赖注入(DI)
- “37岁,年薪50万,一夜被裁”:伪上班,毁掉了多少中国年轻人
- UIAlertController中TextField的用法
- 使用servlet技术与前端进行交互,出现乱码的解决方案,创建一个类,如下:
- 【Windows】多显示器亮度调节工具 - Monitorian
- 价值函数与贝尔曼方程
- linux怎么样用终端打开百度,linux下用终端访问百度网站.doc
- 花千骨歌曲大全 附简谱
- Cesium之地形(1)
- android手机分辨率适配,Android屏幕适配(一)
- 240Hz 1ms 电竞屏看起来怎么样 — ZOWIE XL2540 评测