AI摘要:这篇文章详细介绍了如何通过阿里云的短信服务 API 发送短信验证码,包括发送短信的基本信息、快速调用方法、使用 SDK 调用 API、通过控制台发送短信、自定义封装 API 调用的注意事项以及请求和返回参数的详细说明。文章还提供了示例代码,展示了如何使用阿里云的 SDK 发出短信请求并查询发送结果。此外,文章提到了一些注意事项,如国内短信服务的超时时间设置、QPS(每秒请求量)的限制、以及费用计费的详细信息。

Powered by 返回门户.

本篇文章关于发送短信验证码的教程

2024年9月13日20:10:34

2024年9月15日02:13:32
写到大半夜,c


2024年10月12日10:36:47

官方文档

基本信息
本接口主要用于向单个手机号发送短信,也支持向多个手机号(单次最多支持 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


// 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 + " 正在发送中...");
            }

        }
    }
}

}

最后修改:2024 年 10 月 12 日
如果觉得我的文章挺有趣,赞赏一杯小奶茶
END
本文作者:
文章标题:短信发送验证码
本文地址:https://maxtral.fun/index.php/archives/49/
版权说明:若无注明,本文皆MAXBROSER原创,转载请保留文章出处。