前言

今天来整一期阿里云的短信服务,这个如果在公司应该会很常见的,毕竟项目下订单后需要发送短信,包括通过手机号重置密码,手机号验证登录,等等等!

开头

首先需要登录阿里云,没有注册的可以先注册下,后面就通过实名认证就可以,选着免费开通进去就可以。

重点

AccessKey

短信中需要用到AccessKey IDAccessKey Secret

签名管理

添加自己的签名保存,坐等审核就可以

模板管理

添加自己的模板保存,坐等审核就可以

常用模板库
在里面选一个适用自己的模板就可以

下载

  • 帮助文档

  • sdk及demo

  • 下载

如果下载没反应,在JAVA字体上右键在新标签页中打开链接

maven

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.0.6</version> <!-- 注:如提示报错,先升级基础包版,无法解决可联系技术支持 -->
</dependency><dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>

栗子

package com.liugui;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.UUID;public class SmsDemoTest {//产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";//产品域名,开发者无需替换static final String domain = "dysmsapi.aliyuncs.com";// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)static final String accessKeyId = "LTAI5tCq4mXvuHqfXyANoy7T";static final String accessKeySecret = "nVBsReve3yp6bTdFna7zQuFaNI9plF";public static SendSmsResponse sendSms() 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("xxxxxxx");//必填:短信签名-可在短信控制台中找到request.setSignName("stormMoonlet");//必填:短信模板-可在短信控制台中找到request.setTemplateCode("SMS_215335996");//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam("{\"name\":\"xxxx\", \"code\":\"7842\"}");//选填-上行短信扩展码(无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.setOutId("yourOutId");//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);return sendSmsResponse;}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 {//发短信SendSmsResponse response = sendSms();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 = querySendDetails(response.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());}}
}

呦呦呦!SMS来个通俗点的小栗子!!!相关推荐

  1. 西安前端开发工程师待遇|哎呦不错呦

    现在学习前端开发这块的人非常多,重要的是根据自己的兴趣爱好选择,从行业的需求来看,前景很不错,技术人才缺乏,培训之后的待遇问题还是需要看自身学习程度,是否能把技术熟练掌握,独立解决问题等,待遇与地域不 ...

  2. 循环神经网络(RNN)原理通俗解释

    循环神经网络(RNN)原理通俗解释 1.RNN怎么来的? 2.RNN的网络结构及原理 3.RNN的改进1:双向RNN 4.RNN的改进2:深层双向RNN 4.1 Pyramidal RNN 5.RNN ...

  3. 主题模型(LDA)(一)--通俗理解与简单应用

    这篇文章主要给一些不太喜欢数学的朋友们的,其中基本没有用什么数学公式. 目录 直观理解主题模型 LDA的通俗定义 LDA分类原理 LDA的精髓 主题模型的简单应用-希拉里邮件门 1.直观理解主题模型 ...

  4. 网建SMS实现短信验证

    网建SMS实现短信验证 今天小仙我和大家来分享一下如何通过网建SMS实现短信验证的功能. 当然还有阿里云的短信服务(https://www.aliyun.com/product/sms)等 网建SMS ...

  5. Open GL 基础

    [OPENGL怎么用] OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的 一般编程可用到的函数库包括: OPENGL实用库:函数以glu开头 OPENGL辅助库:函数以aux开头 Win ...

  6. OpenGL: 基础篇

    本人水平有限,如有问题请以文章形式提出,大家可以讨论吗... [OPENGL怎么用] OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的 一般编程可用到的函数库包括: OPENGL实用库: ...

  7. 代码详解|tensorflow实现 聊天AI--PigPig养成记(1)

    Chapter1.代码详解 完整代码github链接,Untitled.ipynb文件内. [里面的测试是还没训练完的时候测试的,今晚会更新训练完成后的测试结果] 修复了网上一些代码的bug,解决了由 ...

  8. tf13: 简单聊天机器人

    现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...

  9. J钓鱼 (vector + queue)

    HR的OJ! #####Description 外出比赛是一个漫长的旅程,所以小明带了很多副扑克牌,然而他找不到两个想要打牌的队友,所以一个人玩起了接竹竿. 接竹竿的规则就是,当一个人出的牌在上面的牌 ...

最新文章

  1. C# 代理应用 - Cachable
  2. 我是如何把VC6一直用到2016年的
  3. Python叠加装饰器,三元表达,生成,调用,递归
  4. oracle笔试题目及答案,Oracle 笔试题目带答案.doc
  5. Qt工作笔记-profile中INSTALLS的使用
  6. UML图中时序图和协作图转化
  7. 10年前腾讯微信后台第一天提交的代码曝光;苹果App Store佣金抽成再做让步;TypeScript 4.1发布|极客头条...
  8. 审计 6 SSRF和任意文件读取
  9. vuex模块化 怎么引用state_vue 组件如何调用 vuex 模块中的getters
  10. android nanohttp,在Android中使用NanoHTTPD
  11. 从安卓迁移游戏存档到ios(辐射避难所为例)
  12. LoRa网关实现水表抄表无线远程数采方案
  13. teraterm 执行sql_teraterm自动或定时执行远程命令
  14. KGB Messenger解题流程
  15. AAAI17最佳论文:Label-Free Supervision of Neural Networks with Physics and Domain Knowledge
  16. CVPR 2021 目标检测论文大盘点(65篇论文)
  17. 涂涂乐的详细实现之二--UI布局和效果
  18. Typing for mac(打字训练工具)
  19. TensorFlow Estimator 官方文档之----内置Estimator
  20. Python-06 数据结构之列表

热门文章

  1. 根据时间戳生成当前月份第一天和最后一天
  2. git 修改历史信息
  3. Python PySpark 大数据时代
  4. 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
  5. 【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏
  6. MapReduce分布式编程模型
  7. 海贼王经典语录(转)
  8. VS2005编译器选项
  9. SQLite在指定列后面插入字段_excel:批量插入任意空列,隔列插入空列,隔任意列插入空列...
  10. Planetary Computer——Global Flood Maps全球洪水数据集