短信服务是每个商家和企业都会去使用的,用户会收到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短信服务的使用相关推荐

  1. 阿里云sms短信服务

    阿里云sms短信服务 阿里云短信介绍 开通阿里云短信服务 添加签名管理与模板管理 获取用户AccessKey 搭建server-msm模块 导入Maven依赖 application.yml 启动类 ...

  2. 一小时学会使用SpringBoot整合阿里云SMS短信服务

    1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...

  3. 对接阿里云sms短信服务发送验证码

    1.购买阿里云短信服务 2.申请签名 3.申请短信模板 4.获取密钥 5.maven依赖 <dependency><groupId>com.aliyun</groupId ...

  4. 解忧云SMS短信服务平台系统 短信发送系统源码 全解密随时可以二开无后门

    解忧云SMS短信服务平台系统 短信发送系统 全解密完美版 经过一系列修复现在程序已经可以完全使用. 并且是全解密随时可以二开.无后门. 一些bug已经完全修复 安装教程 数据库配置文件路径 .env ...

  5. Java 对接 阿里云 的短信服务完成短信的发送与查询

    一.开通阿里云短信服务,为开发时需要用到的信息做准备 1.注册或者使用自己的支付宝账号登录阿里云官网 2.搜索并找到短信服务,进行开通(开通是不要钱的,发送短信的时候才需要钱) 3.注册自己的短信签名 ...

  6. 【阿里云】短信服务 无认证 测试版本 附带短信发送工具类

    一.注册阿里云账号并登录阿里云(阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台) 二.找到云短信服务 直接搜索短信,并进入到短信控制台 三.正文 1.绑定测试手机号 测试版存在限制 发送手机 ...

  7. 使用阿里云的短信服务发送短信

    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...

  8. 使用阿里云的短信服务进行登录实现登录拦截的功能(前后端分离) ---- (Session存储验证码用户信息)

    使用阿里云的短信服务进行登录&实现登录拦截的功能(Session存储 开通短信服务 获取AccessKey 搭建前端环境 搭建后端环境 实体类 Dao层 业务层 控制层 配置类 工具类 开通短 ...

  9. 解忧云SMS短信服务平台系统 短信发送系统 全解密完美版

    简介: 全网首发 解忧云SMS短信服务平台系统 短信发送系统 全解密完美版 经过一系列修复现在程序已经可以完全使用. 并且是全解密随时可以二开.无后门. 一些bug已经完全修复 安装教程 数据库配置文 ...

最新文章

  1. Sitecore7.5 安装指南 -- 从.EXE文件安装Sitecore CMS
  2. 使用mybatis-generator自动生成代码的方法介绍及踩坑
  3. 微软服务器收费吗,了解 Azure 外部服务收费
  4. js优化阿里云图片加载(一)
  5. mysql 数据库之表操作
  6. 再见了亲爱的学生们,再见了敬爱的同事们,再见了信狮
  7. python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
  8. HTML5 Audio标签API整理(一)
  9. Slave_SQL线程异常终止处理之跳过错误
  10. 分享几套古典复古式的UI设计
  11. B key-M key-BM key
  12. Java合并两个有序链表
  13. python nonetype iterable_无法解决“NoneType”对象不是iterable类型
  14. TS + vue3.2 + vite2 + element-plus 通用弹框组件封装
  15. esxi能直通的显卡型号_最便宜能高画质“吃鸡”的显卡是这个型号:RX470矿卡!...
  16. 交集选择器与并集选择器
  17. 主流的开源免费erp(至少十年以上历史)
  18. AJAX请求和普通HTTP请求区别(postman分析)
  19. C# 使用 Direct2D 实现斜角效果
  20. [Linux 学习] grub 引导文件

热门文章

  1. viper4android小米活塞,打造小米手机终极HIFI 有效提升小米手机音质
  2. 国考省考申论:归纳概括题,审题,找点,加工,书写,概括举措的案例
  3. P4944 PION贪吃蛇 题解
  4. 集束搜索(Beam Search Algorithm )
  5. Jetson Nano入门教程:硬件篇+视频学习教程
  6. 漫画:什么是MD5算法?
  7. 银行招计算机专业算什么岗,银行计算机专业岗位全方位分析
  8. 十六宫格拼图(A*/IDA*)(曼哈顿距离)
  9. 19【numpy中的nan和常用方法】01numpy中的nan和常用统计方法
  10. 视觉平台Visionpro脚本神器