开发工具:IDEA、Gradle

1.由于笔者使用阿里云的短信接口,所以需要去阿里云获取相关服务支持,每个新用户都有免费的初始条数,之后需要简单的配置签名与信息模版和AccessKey;

2.导入相关jar包,在build.gradle文件内加入如下坐标:

    // 短信支持implementation('com.aliyun:aliyun-java-sdk-core:3.7.1')implementation('com.aliyun:aliyun-java-sdk-dysmsapi:1.1.0')

3.在application.properties配置文件内加入短信相关配置:

# 阿里云短信接口
accessKeyId=你的AccessKeyId
accessKeySecret=你的accessKeySecret

4.实现发送功能:

package xyz.lsm1998.me.utils;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;
import org.springframework.util.ResourceUtils;import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;/*** 作者:刘时明* 日期:2018/10/30* 时间:16:42* 说明:*/
public class SmsUtils
{//产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";//产品域名,开发者无需替换static final String domain = "dysmsapi.aliyuncs.com";private static String accessKeyId;private static String accessKeySecret;static{Properties properties=new Properties();try{File file= ResourceUtils.getFile("classpath:application.properties");properties.load(new FileInputStream(file));}catch (Exception e){e.printStackTrace();}accessKeyId=properties.getProperty("accessKeyId");accessKeySecret=properties.getProperty("accessKeySecret");}public static void main(String[] args) throws Exception{SendSmsResponse response = sendSms("17774582000","456789");System.out.println(response.getCode());System.out.println(response.getMessage());QuerySendDetailsResponse qr=querySendDetails("17774582000");System.out.println("该用户收到的短信条数:"+qr.getTotalCount());for (QuerySendDetailsResponse.SmsSendDetailDTO o:qr.getSmsSendDetailDTOs()){System.out.println("发送时间:"+o.getSendDate());}}// 发送方法public static SendSmsResponse sendSms(String phoneNumbers, 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(phoneNumbers);//必填:短信签名-可在短信控制台中找到request.setSignName("你的短信签名");//必填:短信模板-可在短信控制台中找到     request.setTemplateCode("你的模板Id");//设置参数request.setTemplateParam("{\"code\":" + code + "}");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者//request.setOutId("123");//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);return sendSmsResponse;}// 查询方法public static QuerySendDetailsResponse querySendDetails(String phoneNumber) 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(phoneNumber);//必填-发送日期 支持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;}
}

PS:如果读者在测试发送功能过程中出现如下错误:

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

则改变build.gradle文件:

    // 短信支持//implementation('com.aliyun:aliyun-java-sdk-core:3.7.1')implementation('com.aliyun:aliyun-java-sdk-core:3.3.1')implementation('com.aliyun:aliyun-java-sdk-dysmsapi:1.1.0')

将sdk-core改为3.3.1版本即可,具体原因笔者暂时不详。

SpringBoot实现短信发送相关推荐

  1. springboot实现短信发送验证码及消息队列发送注册成功短信

    需要源码小伙伴可以到微信小程序:"MINIIT资源库"获取,作者承诺免费 PS:在编写功能之前,需要得到阿里云短信服务API: 使用消息队列(mq)可以将主业务和副业务分离,主业务 ...

  2. 快速实现短信发送功能(SpringBoot)

    Springboot集成短信发送 准备工作:确定要使用的第三方容联云通讯接口因为是免费测试送8元礼包才选择的,首先注册一个账户,主界面的账户信息是我们所需的,复制代码后,包名.位置自己解决; 一.导入 ...

  3. 【短信发送】实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现

    实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现 一.开通腾讯云短信服务 二.工具类--使用qcloudsms实现短信发送 三.Spring Boot项目引入短信发送功能 我们发 ...

  4. SpringBoot+腾讯云实现短信发送

    SpringBoot+腾讯云实现短信发送 在腾讯云创建短信签名 短信签名审核通过后创建短信模板 短信发送SDK(java)文档,将com.tencentcloudapi包导入 <dependen ...

  5. springboot +秒嘀 实现短信发送

    短信发送 步骤一:注册秒嘀(或者用其他短信平台) 第二步:添加短信模板,验证通过即可 第三步:在springboot项目中添加依赖 <dependency><groupId>n ...

  6. SpringBoot代码实现移动云 模板短信发送

    springboot实现移动云 模板短信发送 引入这几个依赖 <dependency><groupId>commons-codec</groupId><art ...

  7. SpringBoot——短信发送、手机验证码登录

    目录 一.短信发送 1.1 阿里云短信服务 1.1.1 设置短信签名 1.1.2 模板管理 1.1.3 设置AccessKey 1.2 短信发送--代码开发 1.2.1 导入maven坐标 1.2.2 ...

  8. springboot实现阿里短信发送并查询状态

    改pom <!-- 阿里云短信服务依赖 --><dependency><groupId>com.aliyun</groupId><artifact ...

  9. 快速集成腾讯云短信实现短信发送(Spring Boot)

    前言 腾讯云活动白嫖 1.地址 地址:https://cloud.tencent.com/act/free?from=14600 2.创建签名(根据实际情况选择) 我的是网站 3.创建模板 选择模板内 ...

最新文章

  1. Unity3D常用代码总结
  2. 干货|对比理解不同概率估计和模型损失函数
  3. TrackMouseEvent介绍
  4. SQL compute by 的使用
  5. Struts DispatchAction
  6. addall php,ThinkPHP3.2框架使用addAll()批量插入数据的方法
  7. flock用法详解 linux_linux下C语言中的flock函数使用方法 .
  8. 机器学习(Machine Learning)
  9. rank 开窗函数_开窗函数(分析函数)
  10. FPGA和USB3.0通信-UVC摄像机
  11. 海马玩模拟器 v0.7.2 官方版​
  12. 伤病缠身仍愿竭力而战 澳网一别穆雷何时再见?
  13. 23行代码下载逆水寒壁纸图片
  14. 计算机图形学第一次上机——中点线算法和中点圆算法
  15. 卡通猫咪鼠标跟随动态js特效
  16. 达人评测 R7 PRO 6850HS 核显相当于什么显卡
  17. C++常见问题总结_构造函数与析构函数
  18. 超级任天堂模拟器 bsnes 开发者自杀(文末附模拟器及ROM)
  19. 什么是远程桌面连接?win11系统如何启用远程桌面连接?
  20. mysql 数据精确度,MySQL中数值类型的精度探析

热门文章

  1. 面试经常问的问题:线性电源VS开关电源
  2. UI, UE, UX工作者之间的区别与联系
  3. android横竖屏切换方法,Android 4.0 横竖屏切换注意事项
  4. 《软件质量保证与测试》课程的学习
  5. 剑三 服务器维护 终止跟宠cd,剑网3驭兽师自动解除了驭兽状态怎么办?跟宠的惊吓状态怎么解除?...
  6. Android _ MVVM 设计模式的一种实现方式
  7. 使用代理IP如何保护自己的信息安全?
  8. matplotlib绘制折线图
  9. 科大星云诗社动态20210128
  10. yolov5代码详解-build_targets(p, targets, model)