轻松集成腾讯云短信服务发送短信(Java实现)

  备案动态     |      2023-09-05
轻松集成腾讯云短信服务发送短信(Java实现)

无论是阿里云还是腾讯云,如果你想在网站上实现短信发送功能,首先要保证你的网站域名已经通过备案,因为短信签名需要使用注册时的截图域名,这样域名就通过了,申请起来就很容易了。很快就会获得批准。 (至于备案,你需要先购买域名和服务器,然后提交材料信息,他们会打电话给你核实基本信息,比如你申请的域名地址,用途是什么这个网站等等,然后初审通过之后,就等五六天)

啰嗦了,好吧,继续

值得一提的是,目前阿里云和腾讯云都在进行活动。腾讯云赠送200条试用短信,阿里云赠送100条试用短信。个人学习足够了。

短信签名和短信模板审核成功后,您就可以正式开始发送短信之旅了。

这里以腾讯云的短信测试为例

在相关项目下的pom文件中添加腾讯云短信的依赖(如果不是maven项目,则需要下载对应的jar包)。详情请参考官方文档腾讯云短信Java SDK依赖groupIdcom.tencentcloudapi/groupId artifactIdtencentcloud-sdk-java/artifactId version3.1.62/version!-- 注:这只是版本号示例,请获取并替换与最新版本号-- /dependency 编写并发送短信验证码import com.tencentcloudapi.common.Credential;import com.tencentcloudapi.common .exception.TencentCloudSDKException;//导入可选配置类import com.tencentcloudapi.common.profile. ClientProfile;import com.tencentcloudapi.common.profile.HttpProfile;//导入短信模块clientimport com.tencentcloudapi.sms.v20190711.SmsClient ;//导入请求接口对应的请求响应类import com.tencentcloudapi.sms.v20190711. models.SendSmsRequest;import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;/***腾讯云短信Sendsms* https://cloud.tencent.com/document/product/382/38778**/public class SendSms{ public static void main ( String[] args ) { try { /* 必要步骤: * 实例化一个认证对象,入参需要传入腾讯云账号密钥对secretId和secretKey * 本示例采用从环境变量读取的方式,并且这两个值需要提前在环境变量中设置* 也可以直接将密钥对写在代码中,但注意不要泄露。代码复制、上传或分享给他人* CAM密钥查询:https://console.cloud.tencent.com/cam/capi */Credential cred=new Credential('secretId', 'secretKey'); //实例化一个http选项,可选,没有特殊要求可以跳过HttpProfile httpProfile=new HttpProfile(); //设置代理httpProfile.setProxyHost('host'); httpProfile.setProxyPort(端口); /* SDK默认使用POST方法。

* 如果需要使用GET方法,可以在这里设置,但是GET方法无法处理大请求*/httpProfile.setReqMethod('POST'); /* SDK有默认超时时间,非必要请不要调整* 例如如有需要,请参考代码获取最新默认值*/httpProfile.setConnTimeout(60); /* SDK会自动指定域名,通常不需要指定域名,但访问金融区服务时必须手动指定域名* 如短信上海金融区命名为sms.ap -shanghai-fsi.tencentcloudapi.com */httpProfile.setEndpoint('sms.tencentcloudapi.com'); /* 非必须步骤: * 实例化一个客户端配置对象,可以指定超时等待配置*/ClientProfile clientProfile=new ClientProfile(); /* SDK默认使用TC3-HMAC-SHA256进行签名* 如非必要请不要修改该字段*/clientProfile.setSignMethod('HmacSHA256'); clientProfile.setHttpProfile(httpProfile); /* 实例化短信的客户端对象* 第二个参数是地理信息,可以直接填写字符串ap-guangzhou,或者引用预设常量*/SmsClient client=new SmsClient(cred, 'ap-guangzhou',客户资料); /* 实例化一个请求对象,根据调用的接口和实际情况进一步设置请求参数* 可以直接查询SDK源码来确定可以设置接口的哪些属性* 属性可能是基本类型,或者可能引用其他数据结构* 建议使用IDE进行开发,可以轻松跳转到各个接口和数据结构的文档*/SendSmsRequest req=new SendSmsRequest(); /* 填写请求参数,其中请求对象的成员变量就是对应接口的输入参数* 可以通过官网接口文档查看请求参数的定义或者跳转到请求对象的定义* 基础type settings: * Help link: * SMS console: https://console.cloud.tencent.com/smsv2 * sms helper: https://cloud.tencent.com/document/product/382/3773 *//* 短信应用ID:实际生成的SDKAppID在【短信控制台】中添加应用,例如1400006666 */String appid='1400009099'; req.setSmsSdkAppid(appid); /* 短信签名内容:采用UTF-8编码,必须填写认可的签名,您可以登录【短信控制台】查看签名信息*/String sign='签名内容'; req.setSign(sign); /* 模板ID:已审核通过的模板ID必须填写,可登录【短信控制台】查看模板ID */String templateID='400000'; req.setTemplateID(模板ID); /* 发送手机号码,采用e.164标准,+[国家或地区代码][电话号码] * 例如+8613711112222,前面有一个+号,86是国家代码,13711112222是电话号码,不超过200个电话号码*/String[] phoneNumbers={ '+8621212313123', '+8612345678902', '+8612345678903'}; req.setPhoneNumberSet(phoneNumbers); /* 模板参数:如果没有模板参数,则设置为空*/String[] templateParams={'5678'}; req.setTemplateParamSet(templateParams); /* 通过客户端对象调用SendSms方法发起请求。

注意,请求方法名对应请求对象* 返回的res是SendSmsResponse类的实例,对应请求对象*/SendSmsResponse res=client.SendSms(req); //输出JSON格式的字符串并返回包System.out .println(SendSmsResponse.toJsonString(res)); //可以取出单个值,可以通过官网接口文档查看返回字段的定义或者跳转到响应对象的定义System.out.println(res.getRequestId()) ; } catch (TencentCloudSDKException e) { e.printStackTrace(); } }} 复制的代码中的注释也很详细。

至于签名内容和签名ID,请在签名管理中查看

可以访问并获取secretId和secretKey:CAM密钥查询

appid 获取AppID 一开始会有一个默认的应用程序,也可以自己创建

还有模板参数体模板管理

以我的为例,文本内容中有secretId 、secretKey、appid、模板参数两个参数,所以方法中必须填写这两个参数,如下

/* 模板参数:如果没有模板参数,则设置为空*/String[] templateParams={'1234', '1'}; req.setTemplateParamSet(templateParams);复制效果图如下