百度可以搜索到很多短信效劳提供商,这里以腾讯云的短信效劳为例(阿里云的也尝试了一下,可能是我运气不好,试了好几次都没有通过审核,阿里云的如今仿佛也需要资质了,企业或者商户),腾讯云刚开通短信效劳赠送100条免费体验,对于我用来搞毕设仅使用验证码来说非常的够用,并且好通过审核,效率挺高。
1.注册腾讯云
这里就不过多赘述了可以使用vx扫一扫快速注册。
2.开通短信效劳
新开通短信效劳赠送100条短信
3.创建短信签名
这里测试过小程序和公众号,两者区别不大,有哪个用哪个,都没有建议公众号注册一个也比较快;证明上传不晓得怎么传,可以点击“查看案例”根据官方提示操作。
创建签名之后,状态会进入“待审核”,审核通过之后会变成“已通过”,我申请的时候大约也就十来分钟左右就通过了,正好可以趁着这个时间去创建正文模板。
4.创建正文模板
这里短信类型有两种,营销短信需要企业认证;一般需要生成随机验证码或者自定义内容时需要加上“{1}”用作占位符,例如:验证码为:123456
5.短信发送操作
maven工程在pom文件中导入依赖 - <!--腾讯云短信验证码-->
- <dependency>
- <groupId>com.tencentcloudapi</groupId>
- <artifactId>tencentcloud-sdk-java</artifactId>
- <version>3.1.62</version>
- </dependency>
复制代码 在腾讯云上可以自动生成代码
这里我们需要得到几个重要的参数SmsSdkAppId,TemplateId,SignName,下面依次介绍
SmsSdkAppId:
TemplateId:
SignName:
将参数全部填写
全部填写后,验证码以“123456”为例,停止在线测试,显示已发送胜利
验证码收到啦,完美!!!
接下来就可以把代码复制粘贴到项目中
假设在腾讯云上找不到代码生成的小伙伴,可以直接粘贴下面代码也是一样的,改一下参数即可
发送短信完好代码如下- import com.tencentcloudapi.common.Credential;
- import com.tencentcloudapi.common.profile.ClientProfile;
- import com.tencentcloudapi.common.profile.HttpProfile;
- import com.tencentcloudapi.common.exception.TencentCloudSDKException;
- import com.tencentcloudapi.sms.v20210111.SmsClient;
- import com.tencentcloudapi.sms.v20210111.models.*;
- public class SendSms
- {
- public static void main(String [] args) {
- try{
- // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的失密
- // 密钥可前往https://console.cloud.tencent.com/cam/capi网站停止获取
- Credential cred = new Credential("SecretId", "SecretKey");
- // 实例化一个http选项,可选的,没有特殊需求可以跳过
- HttpProfile httpProfile = new HttpProfile();
- httpProfile.setEndpoint("sms.tencentcloudapi.com");
- // 实例化一个client选项,可选的,没有特殊需求可以跳过
- ClientProfile clientProfile = new ClientProfile();
- clientProfile.setHttpProfile(httpProfile);
- // 实例化要恳求产品的client对象,clientProfile是可选的
- SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
- // 实例化一个恳求对象,每个接口都会对应一个request对象
- SendSmsRequest req = new SendSmsRequest();
- //手机号数组
- String[] phoneNumberSet1 = {"+8612345678912"};
- req.setPhoneNumberSet(phoneNumberSet1);
-
- //短信应用id “SmsSdkAppId” 填入上文获取的对应参数 这里示例随意填的
- req.setSmsSdkAppId("123456789");
- //签名内容 “SignName” 填入上文获取的对应参数 这里示例随意填的
- req.setSignName("hellocsdn");
- //正文模板id “TemplateId” 填入上文获取的对应参数 这里示例随意填的
- req.setTemplateId("1234567");
- //验证码数组
- String[] templateParamSet1 = {"123456"};
- req.setTemplateParamSet(templateParamSet1);
- // 返回的resp是一个SendSmsResponse的实例,与恳求对象对应
- SendSmsResponse resp = client.SendSms(req);
- // 输出json格式的字符串回包
- System.out.println(SendSmsResponse.toJsonString(resp));
- } catch (TencentCloudSDKException e) {
- System.out.println(e.toString());
- }
- }
- }
复制代码 这样还不算完成,真正在项目中跑起来还需要两个参数:SecretId,SecretKey,这两个是腾讯云账号的秘钥参数。之所以在腾讯云上不用配置,是因为他会自动读取当前账号的这两个属性放入其中yyds
将复制来的两个参数粘贴至这里- Credential cred = new Credential("SecretId", "SecretKey");
复制代码
修改之后运行报错了,这个原因是没有联网,因为短信是通过腾讯云发送的,所以需要本地有网络,有网的情况下假设还是不好使可能是网络动摇切换一个试试就可以了,这种情况我也遇到好屡次了,结果自己开的热点 心痛。。。
这次好了,发送胜利了
看到信息发送过来了,为了区别第一次发送的,这次修改为六个零,可以看到胜利啦!!!
新手小白,如有缺乏之处,多多包涵
假设文章中有什么不对的的地方或者需要改进的地方,还请大佬们不吝赐教 |