呦呦呦!SMS来个通俗点的小栗子!!!
前言
今天来整一期阿里云的短信服务,这个如果在公司应该会很常见的,毕竟项目下订单后需要发送短信,包括通过手机号重置密码,手机号验证登录,等等等!
开头
首先需要登录阿里云,没有注册的可以先注册下,后面就通过实名认证就可以,选着免费开通进去就可以。
重点
AccessKey
短信中需要用到AccessKey ID和AccessKey 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来个通俗点的小栗子!!!相关推荐
- 西安前端开发工程师待遇|哎呦不错呦
现在学习前端开发这块的人非常多,重要的是根据自己的兴趣爱好选择,从行业的需求来看,前景很不错,技术人才缺乏,培训之后的待遇问题还是需要看自身学习程度,是否能把技术熟练掌握,独立解决问题等,待遇与地域不 ...
- 循环神经网络(RNN)原理通俗解释
循环神经网络(RNN)原理通俗解释 1.RNN怎么来的? 2.RNN的网络结构及原理 3.RNN的改进1:双向RNN 4.RNN的改进2:深层双向RNN 4.1 Pyramidal RNN 5.RNN ...
- 主题模型(LDA)(一)--通俗理解与简单应用
这篇文章主要给一些不太喜欢数学的朋友们的,其中基本没有用什么数学公式. 目录 直观理解主题模型 LDA的通俗定义 LDA分类原理 LDA的精髓 主题模型的简单应用-希拉里邮件门 1.直观理解主题模型 ...
- 网建SMS实现短信验证
网建SMS实现短信验证 今天小仙我和大家来分享一下如何通过网建SMS实现短信验证的功能. 当然还有阿里云的短信服务(https://www.aliyun.com/product/sms)等 网建SMS ...
- Open GL 基础
[OPENGL怎么用] OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的 一般编程可用到的函数库包括: OPENGL实用库:函数以glu开头 OPENGL辅助库:函数以aux开头 Win ...
- OpenGL: 基础篇
本人水平有限,如有问题请以文章形式提出,大家可以讨论吗... [OPENGL怎么用] OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的 一般编程可用到的函数库包括: OPENGL实用库: ...
- 代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
Chapter1.代码详解 完整代码github链接,Untitled.ipynb文件内. [里面的测试是还没训练完的时候测试的,今晚会更新训练完成后的测试结果] 修复了网上一些代码的bug,解决了由 ...
- tf13: 简单聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- J钓鱼 (vector + queue)
HR的OJ! #####Description 外出比赛是一个漫长的旅程,所以小明带了很多副扑克牌,然而他找不到两个想要打牌的队友,所以一个人玩起了接竹竿. 接竹竿的规则就是,当一个人出的牌在上面的牌 ...
最新文章
- C# 代理应用 - Cachable
- 我是如何把VC6一直用到2016年的
- Python叠加装饰器,三元表达,生成,调用,递归
- oracle笔试题目及答案,Oracle 笔试题目带答案.doc
- Qt工作笔记-profile中INSTALLS的使用
- UML图中时序图和协作图转化
- 10年前腾讯微信后台第一天提交的代码曝光;苹果App Store佣金抽成再做让步;TypeScript 4.1发布|极客头条...
- 审计 6 SSRF和任意文件读取
- vuex模块化 怎么引用state_vue 组件如何调用 vuex 模块中的getters
- android nanohttp,在Android中使用NanoHTTPD
- 从安卓迁移游戏存档到ios(辐射避难所为例)
- LoRa网关实现水表抄表无线远程数采方案
- teraterm 执行sql_teraterm自动或定时执行远程命令
- KGB Messenger解题流程
- AAAI17最佳论文:Label-Free Supervision of Neural Networks with Physics and Domain Knowledge
- CVPR 2021 目标检测论文大盘点(65篇论文)
- 涂涂乐的详细实现之二--UI布局和效果
- Typing for mac(打字训练工具)
- TensorFlow Estimator 官方文档之----内置Estimator
- Python-06 数据结构之列表
热门文章
- 根据时间戳生成当前月份第一天和最后一天
- git 修改历史信息
- Python PySpark 大数据时代
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏
- MapReduce分布式编程模型
- 海贼王经典语录(转)
- VS2005编译器选项
- SQLite在指定列后面插入字段_excel:批量插入任意空列,隔列插入空列,隔任意列插入空列...
- Planetary Computer——Global Flood Maps全球洪水数据集