阿里云SMS短信服务的使用
短信服务是每个商家和企业都会去使用的,用户会收到106开头的号码的短信的内容,多用于用户传递验证码、系统通知等。
下面记录一下使用阿里云短信服务的经验和心得 ~
以下忽略申请流程,直接接入短息服务...
1. 获取开发者的accesskeys(在阿里云访问控制台寻找)
↓
以上可获取到accessKeyId && accessKeySecret
2. 获取短信签名&&模板
① 签名名称:可以理解为公司名称,比如短信的中的:【中国移动】
需要注意的是签名的场景要跟模板上场景对的上,不然是无法调用模板的。
② 模板管理:就是短信内容,需要获取的是“ 模版CODE ”
3. 发送短信
①首先引入jar包,没有的小伙伴们可以自行下载 ~
aliyun-java-sdk-core.jar
aliyun-java-sdk-dysmsapi.jar
link:https://download.csdn.net/download/weixin_38407595/11504104
②查找官方模板(Java)
https://helpcdn.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.4.1.5124157boF2inj
我自己修改的模板,可以参考下~
package com.platform.util;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
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;/*** @ClassName:AliMessagesUtil* @Author:QQ* @Createtime:2019-08-18 18:88* @Description:TODO* @Version:1.0*/
public class AliMessagesUtil {//产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";//产品域名,开发者无需替换static final String domain = "dysmsapi.aliyuncs.com";// 此处需要替换成开发者自己的APK(在阿里云访问控制台寻找)static final String accessKeyId = "去找吧";static final String accessKeySecret = "去找吧";static final String signName = "签名名称";static final String templateCodeA = "模板CODE";static final String outId = "9696";/*** Send SMS* 收到商品* @param phone* @param code* @return* @throws ClientException*/public static SendSmsResponse sendSms(String phone, 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-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();//必填:待发送手机号request.setPhoneNumbers(phone);//必填:短信签名-可在短信控制台中找到request.setSignName(signName);//必填:短信模板-可在短信控制台中找到request.setTemplateCode(templateCodeA);//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam("{\"name\":\""+name+"\",\"code\":\""+code+"\"}");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.setOutId(outId);//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);return sendSmsResponse;}/*** Query SMS* @param phone* @param bizId* @return* @throws ClientException*/public static QuerySendDetailsResponse querySendDetails(String phone,String bizId) 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);//组装请求对象QuerySendDetailsRequest request = new QuerySendDetailsRequest();//必填-号码request.setPhoneNumber(phone);//可选-流水号request.setBizId(bizId);//必填-发送日期 支持30天内记录查询,格式yyyyMMddSimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");request.setSendDate(ft.format(new Date()));//必填-页大小request.setPageSize(10L);//必填-当前页码从1开始计数request.setCurrentPage(1L);//hint 此处可能会抛出异常,注意catchQuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);return querySendDetailsResponse;}/*** Random number* @param charCount* @return*/public static String getRandNum(int charCount) {String charValue = "";for (int i = 0; i < charCount; i++) {char c = (char) (randomInt(0, 10) + '0');charValue += String.valueOf(c);}return charValue;}private static int randomInt(int from, int to) {Random r = new Random();return from + r.nextInt(to - from);}}
③模拟测试发送短信
package com.orangele.test;import java.util.Scanner;import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.orangele.util.AliMessagesUtil;public class TestSendMessages {public static Scanner input = new Scanner(System.in);public static void main(String[] args) throws ClientException, InterruptedException {/** 测试发送短信*/System.out.print("请输入手机号码:");String phone = input.next();String rand=AliMessagesUtil.getRandNum(4);SendSmsResponse response=AliMessagesUtil.sendSms(phone, "020201908030934","520.00");if (null!=response) {System.out.println("发送成功~\n您的验证码为:"+rand);}System.out.println("↓----------------查询响应----------------↓");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());Thread.sleep(3000L);//明细if(response.getCode() != null && response.getCode().equals("OK")) {QuerySendDetailsResponse querySendDetailsResponse = AliMessagesUtil.querySendDetails(phone,response.getBizId());System.out.println("短信明细查询接口返回数据----------------");System.out.println("响应码=" + querySendDetailsResponse.getCode());System.out.println("响应消息=" + querySendDetailsResponse.getMessage());int i = 0;for(QuerySendDetailsResponse.SmsSendDetailDTO smsSendDetailDTO : querySendDetailsResponse.getSmsSendDetailDTOs()){System.out.println("短信发送详述["+i+"]:");System.out.println("信息内容=" + smsSendDetailDTO.getContent());System.out.println("业务方扩展字段=" + smsSendDetailDTO.getOutId());System.out.println("发送手机号=" + smsSendDetailDTO.getPhoneNum());System.out.println("发送日期=" + smsSendDetailDTO.getSendDate());System.out.println("发送状态=" + smsSendDetailDTO.getSendStatus());System.out.println("短信模板=" + smsSendDetailDTO.getTemplateCode());}System.out.println("查询短信数量=" + querySendDetailsResponse.getTotalCount());System.out.println("短信请求码=" + querySendDetailsResponse.getRequestId());}} }
完成...
阿里云SMS短信服务的使用相关推荐
- 阿里云sms短信服务
阿里云sms短信服务 阿里云短信介绍 开通阿里云短信服务 添加签名管理与模板管理 获取用户AccessKey 搭建server-msm模块 导入Maven依赖 application.yml 启动类 ...
- 一小时学会使用SpringBoot整合阿里云SMS短信服务
1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...
- 对接阿里云sms短信服务发送验证码
1.购买阿里云短信服务 2.申请签名 3.申请短信模板 4.获取密钥 5.maven依赖 <dependency><groupId>com.aliyun</groupId ...
- 解忧云SMS短信服务平台系统 短信发送系统源码 全解密随时可以二开无后门
解忧云SMS短信服务平台系统 短信发送系统 全解密完美版 经过一系列修复现在程序已经可以完全使用. 并且是全解密随时可以二开.无后门. 一些bug已经完全修复 安装教程 数据库配置文件路径 .env ...
- Java 对接 阿里云 的短信服务完成短信的发送与查询
一.开通阿里云短信服务,为开发时需要用到的信息做准备 1.注册或者使用自己的支付宝账号登录阿里云官网 2.搜索并找到短信服务,进行开通(开通是不要钱的,发送短信的时候才需要钱) 3.注册自己的短信签名 ...
- 【阿里云】短信服务 无认证 测试版本 附带短信发送工具类
一.注册阿里云账号并登录阿里云(阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台) 二.找到云短信服务 直接搜索短信,并进入到短信控制台 三.正文 1.绑定测试手机号 测试版存在限制 发送手机 ...
- 使用阿里云的短信服务发送短信
原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...
- 使用阿里云的短信服务进行登录实现登录拦截的功能(前后端分离) ---- (Session存储验证码用户信息)
使用阿里云的短信服务进行登录&实现登录拦截的功能(Session存储 开通短信服务 获取AccessKey 搭建前端环境 搭建后端环境 实体类 Dao层 业务层 控制层 配置类 工具类 开通短 ...
- 解忧云SMS短信服务平台系统 短信发送系统 全解密完美版
简介: 全网首发 解忧云SMS短信服务平台系统 短信发送系统 全解密完美版 经过一系列修复现在程序已经可以完全使用. 并且是全解密随时可以二开.无后门. 一些bug已经完全修复 安装教程 数据库配置文 ...
最新文章
- Sitecore7.5 安装指南 -- 从.EXE文件安装Sitecore CMS
- 使用mybatis-generator自动生成代码的方法介绍及踩坑
- 微软服务器收费吗,了解 Azure 外部服务收费
- js优化阿里云图片加载(一)
- mysql 数据库之表操作
- 再见了亲爱的学生们,再见了敬爱的同事们,再见了信狮
- python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
- HTML5 Audio标签API整理(一)
- Slave_SQL线程异常终止处理之跳过错误
- 分享几套古典复古式的UI设计
- B key-M key-BM key
- Java合并两个有序链表
- python nonetype iterable_无法解决“NoneType”对象不是iterable类型
- TS + vue3.2 + vite2 + element-plus 通用弹框组件封装
- esxi能直通的显卡型号_最便宜能高画质“吃鸡”的显卡是这个型号:RX470矿卡!...
- 交集选择器与并集选择器
- 主流的开源免费erp(至少十年以上历史)
- AJAX请求和普通HTTP请求区别(postman分析)
- C# 使用 Direct2D 实现斜角效果
- [Linux 学习] grub 引导文件