项目需要用到发送短信进行验证、推送、通知,公司选用的是阿里大鱼短信服务,阿里家工程师封装的接口,可以说是很贴心了,下面开始我们集成短信之旅吧~

首先,我们需要先看文档:https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.557.Kspbq8

从文档上可以看出,我们提交个各项申请后会得到的信息有:AccessKeyId 、AccessKeySecret、短信签名以及短信模板(即具体发送的短信内容)。

编写工具类

在编写之前我们需要下载光网提供的sdk:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.5MTyTB

好,拿到这些信息后,接下来我们就开始编写发送短信的工具类:

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.dysmsapi.transform.v20170525.SendSmsResponseUnmarshaller;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;public class SmsUtil {//产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";//产品域名,开发者无需替换static final String domain = "dysmsapi.aliyuncs.com";// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)static final String accessKeyId = "这里填写你的AccessKeyId";static final String accessKeySecret = "这里填写你的AccessKeySecret";/*** 下面这个方法只需要传进去一个Map就可以进行短信的发送操作* 调用该方法必须给这个方法的参数map   put进去下面四个参数* map的key说明:*       number:收信人的手机号*      signName:短信签名*       templateCode:短信模板模板的ID*      templateParam:模板中的变量以Json的形式赋值,例如:"{\"name\":\"Tom\", \"code\":\"123\"}"*            只发送一个参数时就传一个,例如"{\"code\":\"123\"}"-----》map.put("templateParam","{\"code\":\"123\"}")* * */public static void Senders(Map<String, Object> map) 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((String) map.get("number"));//必填:短信签名-可在短信控制台中找到request.setSignName((String) map.get("signName"));//必填:短信模板-可在短信控制台中找到request.setTemplateCode((String) map.get("templateCode"));//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam((String) map.get("templateParam"));//选填-上行短信扩展码(无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者/* request.setOutId("yourOutId");*///hint 此处可能会抛出异常,注意catchtry {SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);System.out.println("短信接口返回的数据----------------");System.out.println("Code=" + sendSmsResponse.getCode());System.out.println("Message=" + sendSmsResponse.getMessage());System.out.println("RequestId=" + sendSmsResponse.getRequestId());System.out.println("BizId=" + sendSmsResponse.getBizId());Thread.sleep(1000L);//查明细if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {QuerySendDetailsResponse querySendDetailsResponse = querySendDetails(sendSmsResponse.getBizId());System.out.println("短信明细查询接口返回数据----------------");System.out.println("Code=" + querySendDetailsResponse.getCode());System.out.println("Message=" + querySendDetailsResponse.getMessage());int i = 0;for(QuerySendDetailsResponse.SmsSendDetailDTO smsSendDetailDTO : querySendDetailsResponse.getSmsSendDetailDTOs()){System.out.println("SmsSendDetailDTO["+i+"]:");System.out.println("Content=" + smsSendDetailDTO.getContent());System.out.println("ErrCode=" + smsSendDetailDTO.getErrCode());System.out.println("OutId=" + smsSendDetailDTO.getOutId());System.out.println("PhoneNum=" + smsSendDetailDTO.getPhoneNum());System.out.println("ReceiveDate=" + smsSendDetailDTO.getReceiveDate());System.out.println("SendDate=" + smsSendDetailDTO.getSendDate());System.out.println("SendStatus=" + smsSendDetailDTO.getSendStatus());System.out.println("Template=" + smsSendDetailDTO.getTemplateCode());}System.out.println("TotalCount=" + querySendDetailsResponse.getTotalCount());System.out.println("RequestId=" + querySendDetailsResponse.getRequestId());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static QuerySendDetailsResponse querySendDetails(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("15000000000");//可选-流水号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;}public static void main(String[] args) throws ClientException, InterruptedException {//发短信Map<String, Object> map = new HashMap<>();//用于设置发送短信的参数map.put("number", "发送目标的手机号");map.put("signName", "请填写阿里的短信签名");map.put("templateCode", "短信模板模板的ID");map.put("templateParam", "{\"code\":\"填写验证码,后面的\不要忘记加上\"}");      //到这里短信的参数就搞定了//下面进行的是短信的发送SmsUtil.Senders(map);}
}

java阿里大鱼短信发送相关推荐

  1. 阿里大鱼短信发送手把手教会

    阿里大鱼短信发送 1.在阿里云平台上注册账号,并登陆 点击官网后,进入页面左下方有短信: 短信服务这一项,点击 这样就可以添加发送模板: 在这里可以模仿xxx的短信模板: 这样就编好了模板,会得到一个 ...

  2. 阿里大鱼短信发送平台

    首先登陆阿里大鱼短息发送平台 http://www.alidayu.com/ (阿里巴巴旗下) 登陆后点击管理中心,进入后台的管理中心,如图所示 进入管理中心后,点击短信签名管理,建立短信签名模板(审 ...

  3. Java阿里云短信发送工具类

    短信服务API介绍 阿里云短信发送:调用SendSms发送短信_短信服务-阿里云帮助中心 <!--springboot项目阿里云发送短信--> <dependency>< ...

  4. Java 阿里大鱼 短信

    准备阶段 开发者在阿里平台注册  http://www.alidayu.com/?spm=a3142.8062825.1.d10001.Iyxv2U 创建应用短信模板 获取自己的 App key 和 ...

  5. 阿里大鱼--短信发送API

    参考链接一 参考链接二 项目中运用了阿里大鱼来实现短信的发送.主要步骤如下 1)申请短信签名 在控制台完成模板与签名的申请 2)申请短信模板 在控制台完成模板与签名的申请 3) 第一部分,获取IAcs ...

  6. 阿里大鱼短信发送接口开发

    一. API接口介绍 alibaba.aliqin.fc.sms.num.send (短信发送) 向指定手机号码发送模板短信,模板内可设置部分变量.使用前需要在阿里大于管理中心添加短信签名与短信模板. ...

  7. Java阿里大鱼短信接入

    (这个是阿里云里面的哈,不是淘宝里面的两种还是不一样;阿里云后台 短信服务里面的) 短信推送在很多项目中都有用到,总结一下吧,下次直接copy代码!! 关于accesskeyId和key可以查看API ...

  8. 阿里大鱼php发送短信,阿里大鱼短信发送PHP代码

    首先 请下载阿里大鱼的SDK短信代码 选择PHP版本的  然后应用如下代码即可 import("@.ORG.alidayu.TopSdk","",". ...

  9. php阿里大鱼短信接口,阿里大鱼短信发送接口demo

    [实例简介]这是一个阿里大于的短信接口示例demo,修改代码中的 appkey 和 secretkey即可 发短信验证码 [实例截图] [核心代码] include "AlibabaAliq ...

最新文章

  1. C++ 关于方法传值
  2. linux进程中对信号的屏蔽,linux进程中的信号屏蔽
  3. VB-VB.NET中 从字符串“XX”到类型“Double”的转换无效
  4. T-SQL Enhancement in SQL Server 2005[下篇]
  5. Android 访问权限设置
  6. 【监控笔记】【2.2】扩展事件——死锁监控
  7. 通过VScode进行git的版本管理
  8. 提示java不是内部命令_Win7命令窗口提示“javac不是内部或外部命令”怎么解决?...
  9. android 支付宝第三方支付
  10. jsp网站用什么虚拟主机
  11. 腾讯云 接口验签 使用qcloud-java-sdk
  12. SFP光模块的多模和单模区别
  13. HTML+CSS+移动端前端
  14. 用JAVA编写MD5大写32位加密
  15. STM32 MFRC522 IC读卡 程序及原理图
  16. 计算机应用与英语教学的深度融合,浅谈计算机应用与英语教学的整合
  17. 【周志华机器学习】五、神经网络
  18. linux sh语法进入目录,Linux_常用的Linux shell命令详解收集整理,1 文件与目录操作命令 1.1文 - phpStudy...
  19. stm32 软件怎么设置写保护_STM32 , 写保护问题! (amobbs.com 阿莫电子论坛)
  20. python网页版百度_python,_爬虫 页面不存在_百度搜索,python - phpStudy

热门文章

  1. 关于Job for network.service failed because the control process exited with error code.
  2. 使用certbot为你的网站免费上https
  3. linux数据恢复软件extunelete安装及实战讲解
  4. php对word文档进行操作,PHP操作Word文档
  5. MAVEN超详细教程
  6. Python查看微信共同好友
  7. ccf会议和期刊目录 (2019 年)
  8. 家居装修类APP开发需要开发什么功能?
  9. 优秀数智生态伙伴|长春乐为科技马小明:三年前,我就开始向客户深度经营转型...
  10. 24届近5年北京工业大学自动化考研院校分析