本篇文章关于发送短信验证码的教程
2024年9月13日20:10:34
2024年9月15日02:13:32 写到大半夜,c
2024年10月12日10:36:47
官方文档
[scode type=“green”]基本信息 本接口主要用于向单个手机号发送短信,也支持向多个手机号(单次最多支持 1000 个手机号)发送相同签名、相同模板变量的短信,群发存在一定延迟。如果您需要向多个手机号发送不同签名、不同模板变量的短信,请使用 SendBatchSms 接口(单次最多支持 100 个手机号)。 服务接入点(Endpoint):全局接入点域名为dysmsapi.aliyuncs.com。请参见服务接入点 ,根据您的使用地域,选择对应的接入点地址。 快速调用 推荐您通过 SDK 调用 API。 如果您需要了解如何使用 ,请参见首次调用 API。 如果您需要使用控制台发送短信,请参见通过控制台发送短信。 如果您需要自定义封装 API 调用,请参见V3 版本请求体&签名机制。 注意事项 国内短信服务超时时间建议设置为≥1S;发生超时失败的情况时,建议查看回执状态后再判断是否重试。超时和重试的相关设置,请参见超时机制、重试机制。 国内短信、国际短信和多媒体短信,均不支持幂等的能力,请您自行做好幂等控制。 发送短信会根据发送量计费,计费详情请参见计费概述。 QPS 限制 本接口的单用户 QPS 限制为 5000/秒。超过限制,API 调用将会被限流,请合理使用。
请求参数 字段名称 字段详情 PhoneNumbers string 接收短信的手机号码。手机号码格式:展开详情
示例值: 1390000**** SignName string 短信签名名称。展开详情
示例值: 阿里云 参考取值来源: UpdateSmsSign CreateSmsSign AddSmsSign QuerySmsSignList ModifySmsSign TemplateCode string 短信模板 Code。展开详情
示例值: SMS_15305**** 参考取值来源: AddSmsTemplate UpdateSmsTemplate CreateSmsTemplate ModifySmsTemplate QuerySmsTemplateList TemplateParam string 短信模板变量对应的实际值。支持传入多个参数。展开详情
示例值: {“name”:“张三”,“number”:“1390000****”} SmsUpExtendCode string 上行短信扩展码。上行短信指发送给通信服务提供商的短信,用于定制某种服务、完成查询,或是办理某种业务等,需要收费,按运营商普通短信资费进行扣费。展开详情
示例值: 90999 OutId string 外部流水扩展字段。展开详情
示例值: abcdefgh 返回参数 字段名称 字段详情 Code string 请求状态码。展开详情
示例值: OK Message string 状态码的描述。
示例值: OK BizId string 发送回执 ID。展开详情
示例值: 9006197469364984**** RequestId string 请求 ID。
示例值: F655A8D5-B967-440B-8683-DAD6FF8DE990[/scode]
[scode type=“green”]// This file is auto-generated, don’t edit it. Thanks. package com.aliyun.sample;
import com.aliyun.tea.; import com.aliyun.dysmsapi20170525.; import com.aliyun.dysmsapi20170525.models.; import com.aliyun.teaopenapi.; import com.aliyun.teaopenapi.models.; import com.aliyun.teaconsole.; import com.aliyun.darabonba.env.; import com.aliyun.teautil.; import com.aliyun.darabonbatime.; import com.aliyun.darabonbastring.;
public class Sample {
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.accessKeyId = accessKeyId;
config.accessKeySecret = accessKeySecret;
return new com.aliyun.dysmsapi20170525.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dysmsapi20170525.Client client = Sample.createClient(com.aliyun.darabonba.env.EnvClient.getEnv("ACCESS_KEY_ID"), com.aliyun.darabonba.env.EnvClient.getEnv("ACCESS_KEY_SECRET"));
// 1.发送短信
SendSmsRequest sendReq = new SendSmsRequest()
.setPhoneNumbers(args.get(0))
.setSignName(args.get(1))
.setTemplateCode(args.get(2))
.setTemplateParam(args.get(3));
SendSmsResponse sendResp = client.sendSms(sendReq);
String code = sendResp.body.code;
if (!com.aliyun.teautil.Common.equalString(code, "OK")) {
com.aliyun.teaconsole.Client.log("错误信息: " + sendResp.body.message + "");
return ;
}
String bizId = sendResp.body.bizId;
// 2. 等待 10 秒后查询结果
com.aliyun.teautil.Common.sleep(10000);
// 3.查询结果
java.util.List<String> phoneNums = com.aliyun.darabonbastring.Client.split(args.get(0), ",", -1);
for (String phoneNum : phoneNums) {
QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest()
.setPhoneNumber(com.aliyun.teautil.Common.assertAsString(phoneNum))
.setBizId(bizId)
.setSendDate(com.aliyun.darabonbatime.Client.format("yyyyMMdd"))
.setPageSize(10L)
.setCurrentPage(1L);
QuerySendDetailsResponse queryResp = client.querySendDetails(queryReq);
java.util.List<QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO> dtos = queryResp.body.smsSendDetailDTOs.smsSendDetailDTO;
// 打印结果
for (QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO dto : dtos) {
if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "3")) {
com.aliyun.teaconsole.Client.log("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + "");
} else if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "2")) {
com.aliyun.teaconsole.Client.log("" + dto.phoneNum + " 发送失败");
} else {
com.aliyun.teaconsole.Client.log("" + dto.phoneNum + " 正在发送中...");
}
}
}
}
}[/scode]