项目中用到短信验证功能,看到腾讯云有短信服务,就直接使用了,当然其它公司也会停工短信服务,百度可以找到很多,使用的情况应该大同小异,这里就以腾讯云的短信服务为例,说明一下短信服务的申请和使用。
1 短信服务申请
登录腾讯云之后,在云产品里面选择移动和通信,短信。这里附上腾讯云短信地址
在弹出的界面,点击添加应用。
在弹出的窗口,填写应用名称和应用简介
填写完成之后,平台会为我们的应用创建一条应用,点击项目名称“短信测试项目”。
进入之后,里面有两个非常重要的参数appid和appkey,这两个参数会在程序中用到。
有了以上两个参数,就可以发短信了,下面就是要配置短信的内容模板,点击上面的国内短信。
然后依次点击短信内容配置—短信签名—创建签名,之后会弹出一个创建短信签名的窗口,需要填写相关信息。
其中红色方框的签名内容,就是短信内容中一开始的签名。这部分填写之后需要腾讯审核,如果材料没问题,审核会很快通过,如果没有通过,就看他们给的失败信息。比如我用的是个人账号,签名类型就需要选择他用,除了需要公司的营业执照,还需要公司的授权书,他们给提供格式,需要公司盖章。完成之后点击确认,会在短信签名下方生成一条短信签名信息。
短信签名通过之后,需要编辑典型正文,点击上方的短信正文。
点击创建正文模板,然后会弹出正文模板的窗口。
此处,模板名称和申请说明可正常填写,重点看一下短信内容的填写,有一个模板示例,按照示例填写。确认。为了避免不合法信息,腾讯也是要审核的,这个审核速度也很快。
在短信正文下方也会生成一条信息。
注意这个地方,红色方框处有一个ID,这也是一个很重要的参数,程序中也会用到,在程序中为templateID,也就是模板ID。
2 程序代码
使用java编写代码,参考地址为https://cloud.tencent.com/document/product/382/13613,程序可分为两部分,一个是maven引入,一个是main函数测试。
Maven部分
代码语言:txt复制<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.6</version>
</dependency>
代码部分
代码语言:txt复制package com.example.demo.util;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
import java.io.IOException;
public class QCloudSMS {
public static void main(String[] args) {
// 短信应用SDK AppID
int appid = 1400xxxx; // 1400开头
// 短信应用SDK AppKey
String appkey = "26xxxxf3";
// 需要发送短信的手机号码
String[] phoneNumbers = {"13512345678"};
// 短信模板ID,需要在短信应用中申请
int templateId = 3xxxx9; // NOTE: 真实的模板ID需要在短信控制台中申请
//templateId7839对应的内容是"您的验证码是: {1}"
try {
String[] params = {"5678"};//数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
templateId, params, "", "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
System.out.println(result);
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
}
}
}
运行程序之后,会在手机上收到一条短信。
3 结语
短信服务申请比较简单,使用也不复杂。在一开始使用的时候还是有一些坑,比如templateID这个参数,是短信正文的ID,不是短信签名的ID,这个在调试的时候也走了弯路。
短信发送程序,在实际使用的时候,发送模块放到util包中,随机码也需要写程序生成。