1、自述
早在的时候,我就在项目中使用过阿里云的短信服务,现在我上阿里云短信控制台看,还能看到当时创建的短信签名,如下图所示。
出于某种原因,我现在想重新申请一个新的签名,却审批失败了,原因是:
意思很明确,就是说你必须要有一个上线的应用(公网能访问的),自己个人学习或者做一些线下项目啊都是申请不到短信签名的,之前的时候并没有这么严格。
目前有两种方案:
买云服务器,买域名,备案域名去别的云看看?比如腾讯云、华为云等
第一种方案的话需要花钱,自己又只是个人用户,并没有需要上线的项目,所以这里先去腾讯云看看情况吧。
经过自己的一番研究之后,发现腾讯云也一样,需要有上线的项目才能申请到短信签名,但万幸的是腾讯云支持公众号和小程序,毕竟是自家的产品,而且公众号和小程序这两样我都有,因此就顺利申请到短信签名了。
2、腾讯云短信服务控制台
一般的步骤是:申请短信签名->申请短信模板->发短信测试,模板就像下面这样的,
其中{1}、{2}是变量,现在我们在腾讯云短信服务控制台上发一条短信试试。
腾讯云短信服务控制台链接:https://console./smsv2
新建群发任务,如下图所示:
上传短信变量文件,比如csv格式文件内容如下所示:
客户手机号,短信内容变量1,短信内容变量2131########,162626,5156########,162627,5
最后点击确定,等待审核通过后就能收到短信了。
3、Java SDK发送短信
实际情况下我们会在项目中调用腾讯云的SDK去发送短信,这里演示Java SDK。
Maven依赖:
<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to /search?q=tencentcloud-sdk-java and get the latest version. --><!-- 请到/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 --><version>4.0.11</version></dependency>
腾讯云短信服务相关接口Java SDK文档:/document/product/382/43194
这个文档写的很详细了,我就没必要再重写一遍了,下面展示一下我的发短信的测试代码(最简原则,去掉非必须的代码):
// 1.构造认证对象Credential cred = new Credential("secretId", "secretKey");// 2.构造客户端配置HttpProfile httpProfile = new HttpProfile();httpProfile.setReqMethod("POST");httpProfile.setEndpoint("");ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 3.构造客户端SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);// 4.请求参数String sdkAppId = "";String signName = "";String templateId = "";String[] templateParamSet = {""};String[] phoneNumberSet = {""};// 5.构造请求对象SendSmsRequest req = new SendSmsRequest();req.setSmsSdkAppid(sdkAppId);req.setSign(signName);req.setTemplateID(smsSendRequest.getTemplateId());req.setTemplateParamSet(templateParamSet);req.setPhoneNumberSet(phoneNumberSet);// 6.发送请求SendSmsResponse res = null;try {res = client.SendSms(req);} catch (TencentCloudSDKException e) {log.error(e.getMessage(),e);}log.info(SendSmsResponse.toJsonString(res));