1、序言

  业务中使用短信服务,主要使用了腾讯云和阿里云,价格和使用方式基本一样,但是推荐使用腾讯云,因为会送200条(穷鬼推荐)。

2、步骤

2.1 地址:

  腾讯云短信服务
  阿里云短信服务

2.2 需要申请的参数

  1. 密钥id(腾讯云:secretId,阿里云:accessKeyId)
  2. 密钥(腾讯云:secretKey,阿里云:accessKeySecret)
  3. 短信签名(腾讯云:sign,阿里云:signName)
  4. 短信模板id(腾讯云:templateID,阿里云:templateCode)
  5. appid(腾讯云专用:sdkAppid)

3、腾讯云

腾讯云短信申请

2.1 密钥申请(包括密钥和密钥id)

链接:腾讯云短信密钥申请
此处没有审核时间,会生成secretId和secretKey
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQDB9WRa-1620495052115)(http://www.lichuan.cool/images/blog/2020/08/密钥.png “密钥申请”)]

2.2 短信签名申请

链接:腾讯云短信签名申请
一般两个小时能通过审核,开发需要用到短信签名内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVYpk1BU-1620495052120)(http://www.lichuan.cool/images/blog/2020/08/短信签名.png “腾讯云短信签名申请”)]

2.3 短信模板申请

链接:腾讯云短信模板申请
一般两个小时能通过审核(自定义模板需要注意格式,不然很容易不能通过审核),审核通过后需要使用模板ID
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-64JDRTt5-1620495052121)(http://www.lichuan.cool/images/blog/2020/08/短信模板.png “腾讯云短信模板”)]

2.4 appid申请

链接:appid申请
此处没有审核时间,需要使用到appid
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SNBNd2T-1620495052123)(/images/blog/2020/08/appid.png “申请appid”)]


到这里基本申请完毕,开始进入开发阶段

2.5 官方文档和实例代码

文档:腾讯云短信文档
使用腾讯云短信的小伙伴需要注意,腾讯云的文档更新不及时,示例代码也不一定正确,文档仅供参考
但是腾讯云提供了Open API Explorer在线测试工具(阿里云也有),点击相应的应用会生成代码,直接复制到自己的代码里就可以了。Explorer

2.6 正式使用

选择使用SDK开发,文档地址java SDK文档

2.6.1 添加maven依赖

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.62</version><!-- 注:这里只是示例版本号,请获取并替换为 最新的版本号 -->
</dependency>

2.6.2 发送短信

@Service
public class TencentSendSms {@Autowiredprivate TencentDySmsParam param;private static final Logger log = LoggerFactory.getLogger(TencentSendSms.class);String ok = "Ok";public String send(String[] phoneArr, String[] templateParams) {StringBuilder result = new StringBuilder();try{Credential cred = new Credential("AKIDwmQq9FWmFTQp0vAx6ycyKPvA8sNchaSE", "4wYtyoeGlGWXJrCYEhvtd8g07pHWXHlj");HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("sms.tencentcloudapi.com");ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);SendSmsRequest req = new SendSmsRequest();// 添加电话号码req.setPhoneNumberSet(this.toPullPhoneArr(phoneArr));// 添加短信签名req.setSign(param.getSign());// 添加模板编号req.setTemplateID(param.getTemplateID());// 添加sdkAppidreq.setSmsSdkAppid(param.getSdkAppid());// 设置模板参数req.setTemplateParamSet(templateParams);SendSmsResponse resp = client.SendSms(req);result = new StringBuilder(SendSmsResponse.toJsonString(resp));System.out.println("返回结果:" + result);// 返回code,OK就是成功SendStatus[] sendStatusSet = resp.getSendStatusSet();for (SendStatus status : sendStatusSet) {if (ok.equals(status.getCode())) {log.info(status.getPhoneNumber() + "短信发送成功!");result.append("1");} else {log.error(status.getPhoneNumber() + "短信发送失败!");result.append("0");}}} catch (TencentCloudSDKException e) {log.error("短信发送异常");System.out.println(e.toString());}return result.toString();}public String[] toPullPhoneArr(String[] phoneArr) {return Arrays.stream(phoneArr).map(phone -> "+86" + phone).toArray(String[]::new);}
}

4、阿里云

申请方式和使用方式与腾讯云没什么差别,文档地址

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</version>
</dependency>
@Service
public class AliSendSms {@Autowiredprivate AliDySmsParam dySms;private static final Logger log = LoggerFactory.getLogger(AliSendSms.class);public String send(String phone) throws ClientException {//设置超时时间-可自行调整System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化ascClient需要的几个参数//短信API产品名称(短信产品名固定,无需修改)final String product = "Dysmsapi";//短信API产品域名(接口地址固定,无需修改)final String domain = "dysmsapi.aliyuncs.com";//替换成你的AKfinal String accessKeyId = dySms.getAccessKeyId();//你的accessKeySecret,参考本文档步骤2final String accessKeySecret = dySms.getAccessKeySecret();//初始化ascClient,暂时不支持多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();//使用post提交request.setMethod(MethodType.POST);//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为国际区号+号码,如“85200000000”request.setPhoneNumbers(phone);//必填:短信签名-可在短信控制台中找到request.setSignName(dySms.getSignName());//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版request.setTemplateCode(dySms.getTemplateCode());//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败//参考:request.setTemplateParam("{\"变量1\":\"值1\",\"变量2\":\"值2\",\"变量3\":\"值3\"}")request.setTemplateParam("{\"code\":\"123456\"}");//可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者// request.setOutId("yourOutId");//请求失败这里会抛ClientException异常SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);// 请求结果:isv.AMOUNT_NOT_ENOUGH消息账户余额不足System.out.println("请求结果=" + sendSmsResponse.getCode() + ";消息=" + sendSmsResponse.getMessage());if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {//请求成功log.info(phone + "短信发送成功");} else {log.error(phone + "消息发送失败,原因是:" + sendSmsResponse.getMessage());}return sendSmsResponse.getMessage();}
}

如果按照支持逻辑到这一步调用阿里短信服务发送短信,会报一个isv.AMOUNT_NOT_ENOUGH的问题,原因就是没充钱,需要先充钱,不像腾讯云会送短信

腾讯云、阿里云短信服务相关推荐

  1. 使用阿里云提供的短信服务发送短信(个人版)

    本人最近需要实现一个注册发短信验证码的功能,找了几家短信服务平台,如腾讯云,云片网等,发现他们都没有提供给用户个人的短信服务权限,申请短信签名等都需要有企业等相关证明,最后找到了阿里云的短信服务平台, ...

  2. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

  3. SpringCloud___阿里大于短信服务

    4.阿里大于短信服务 4.1.demo 注册页面上有短信发送的按钮,当用户点击发送短信,我们需要生成验证码,发送给用户.我们将使用阿里提供的阿里大于来实现短信发送. 参考课前资料的<阿里短信.m ...

  4. 阿里大鱼短信服务的使用

    1.使用须知 1.使用阿里大鱼短信服务时须知当前用户的AccessKey ID和Access Key Secret 注意:在使用短信服务时,发送短信时需要进行付费的,而付费则是根据这个AccessKe ...

  5. 阿里SendSms短信服务

    阿里SendSms短信服务 1.先下载依赖 npm install @alicloud/sms-sdk --save 2.引入依赖文件 const Core = require('@alicloud/ ...

  6. 阿里大于短信服务API Demo及使用说明

    关于短信验证,本人使用的是阿里大于的服务平台.不啰嗦废话,直接上步骤: 首先需要在阿里大于短信服务国内消息中注册个性签名及短信模板.这里需费些时间,只要注册成功,便可以使用验证功能了.下面是短信模板截 ...

  7. 阿里大鱼短信服务开启及使用

    一.开通阿里大鱼短信服务 以PHP版为例 1.本地项目中安装安装PHP SDK (1)composer安装: https://help.aliyun.com/document_detail/11218 ...

  8. 阿里云——OpenAPI使用——短信服务

    目录 前言 产品位置 短信服务 API发送测试 控制台发送测试 链接地址: 阿里云 OpenAPI 开发者门户 前言 公司一直没用这个,最近搞Eolink的时候看到OpenAPI,为了测试,我就搞一下 ...

  9. egg.js 调用阿里云(阿里大于)短信验证码服务

    1.开通阿里云短信服务 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 可以免费申请 企业短信验证码 200条 重点是: 签名名称:接收验证码内容时,[]里的文字. 短信模板code:相当于 ...

  10. 【微服务集成阿里SMS短信服务发送短信】

    发送短信项目中很多地方都在使用,所以集成一个单独的服务,如果某个服务需要发送短信只需要依赖短信服务即可. 1.开通阿里SMS短信,创建模板 (省略) 2.创建短信服务 common-server-sm ...

最新文章

  1. 【转】iOS开发-Protocol协议及委托代理(Delegate)传值
  2. FD.io/VPP — VPP Agent — 架构设计
  3. kafka和flume进行整合的日志采集的confi文件编写
  4. 【干货】Linux中实用但很小众的11个炫酷终端命令
  5. 雷兽的数据库CAP乱谈之(一)阐述
  6. delphi 通讯数据解析_网络工程师-ARP是如何解析?
  7. 获取mysql系统时间
  8. java使用io上传文件_文件传输基础——Java IO流
  9. 学校老师要求微信群里的家长下载钉钉建群,解散微信群,钉钉是不正当商业竞争吗?
  10. [HP NX6320] 安装 windows2003 操作系统 全过程
  11. 5.3 上兴远程控制
  12. 【生物电信号】基于matlab GUI生物电信号仿真【含Matlab源码 684期】
  13. 解决谷歌浏览器最新chrome9+ 版本CORS跨域问题
  14. 只是想要自己喜欢的生活,可是你有资格么?
  15. 携手推进国产化发展,未来智安与麒麟软件完成兼容互认证
  16. Java中的finalize方法
  17. 5个MongoDB安全提示,帮助您远离困境
  18. Charles--分析网络封包的工具
  19. zotero+坚果云实现同步
  20. python判断汉字偏胖_OCR 汉字识别学习笔记2019-01-02

热门文章

  1. 学习前端框架Metronic
  2. 梯度下降、牛顿法凸优化、L1、L2正则化、softmax、Batchnorm、droupout、Targeted Dropout详解
  3. 沪指震荡下行失守300点 美股小幅收跌
  4. POJ 1852 蚂蚁问题
  5. 关于海康ipc的几个参数
  6. 例子(点击www.xxx.com/yyy/index.php)
  7. CGDC:单机游戏 欢迎“盗版”
  8. opensips服务器(sip服务器)端搭建、安装过程,什么是Xshell,Xshell下载
  9. python打印字母图形2
  10. 小学三年级计算机基础知识教案,小学三年级信息技术教案画图.doc