本文目录导读:

我来帮您整理阿里云通信(原阿里大于)的短信接口调用方法。
准备工作
开通服务
- 登录阿里云官网
- 开通"短信服务"
- 申请短信签名和短信模板
- 获取AccessKey ID和AccessKey Secret
安装SDK
# Python
pip install alibabacloud_dysmsapi20170525
# Java (Maven)
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.24</version>
</dependency>
# Node.js
npm install @alicloud/sms-sdk
# PHP
composer require alibabacloud/dysmsapi
各语言示例
Python 示例
from alibabacloud_dysmsapi20170525.client import Client
from alibabacloud_dysmsapi20170525 import models
from alibabacloud_tea_openapi import models as open_api_models
# 初始化客户端
def create_client():
config = open_api_models.Config(
access_key_id='your-access-key-id',
access_key_secret='your-access-key-secret'
)
config.endpoint = 'dysmsapi.aliyuncs.com'
return Client(config)
# 发送短信
def send_sms(phone_numbers, template_code, template_param):
client = create_client()
request = models.SendSmsRequest(
phone_numbers=phone_numbers,
sign_name='你的短信签名',
template_code=template_code,
template_param=template_param
)
try:
response = client.send_sms(request)
if response.body.code == 'OK':
print(f"短信发送成功,BizId: {response.body.biz_id}")
else:
print(f"发送失败: {response.body.message}")
return response
except Exception as e:
print(f"错误: {e}")
# 使用示例
if __name__ == '__main__':
# 发送验证码
params = '{"code":"123456"}'
send_sms('13800138000', 'SMS_123456789', params)
Java 示例
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.models.*;
public class SmsSender {
private static Client createClient() throws Exception {
Config config = new Config()
.setAccessKeyId("your-access-key-id")
.setAccessKeySecret("your-access-key-secret");
config.endpoint = "dysmsapi.aliyuncs.com";
return new Client(config);
}
public static void sendSms(String phoneNumber, String templateCode,
String templateParam) {
try {
Client client = createClient();
SendSmsRequest request = new SendSmsRequest()
.setPhoneNumbers(phoneNumber)
.setSignName("你的短信签名")
.setTemplateCode(templateCode)
.setTemplateParam(templateParam);
SendSmsResponse response = client.sendSms(request);
if ("OK".equals(response.getBody().getCode())) {
System.out.println("发送成功: " + response.getBody().getBizId());
} else {
System.out.println("发送失败: " + response.getBody().getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 发送验证码
String params = "{\"code\":\"123456\"}";
sendSms("13800138000", "SMS_123456789", params);
}
}
Node.js 示例
const Dysmsapi = require('@alicloud/dysmsapi20170525').default;
const { Config } = require('@alicloud/openapi-client');
// 创建客户端
const client = new Dysmsapi(new Config({
accessKeyId: 'your-access-key-id',
accessKeySecret: 'your-access-key-secret',
endpoint: 'dysmsapi.aliyuncs.com'
}));
// 发送短信
async function sendSms(phoneNumber, templateCode, templateParam) {
try {
const request = {
phoneNumbers: phoneNumber,
signName: '你的短信签名',
templateCode: templateCode,
templateParam: JSON.stringify(templateParam)
};
const response = await client.sendSms(request);
if (response.body.code === 'OK') {
console.log('发送成功:', response.body.bizId);
} else {
console.log('发送失败:', response.body.message);
}
return response;
} catch (error) {
console.error('错误:', error);
}
}
// 使用
sendSms('13800138000', 'SMS_123456789', { code: '123456' });
PHP 示例
<?php
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
// 配置
$config = new \AlibabaCloud\Tea\Config([
'accessKeyId' => 'your-access-key-id',
'accessKeySecret' => 'your-access-key-secret'
]);
$config->endpoint = 'dysmsapi.aliyuncs.com';
$client = new Dysmsapi($config);
// 发送短信
function sendSms($phoneNumber, $templateCode, $templateParam) {
global $client;
$request = new \AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest([
'phoneNumbers' => $phoneNumber,
'signName' => '你的短信签名',
'templateCode' => $templateCode,
'templateParam' => json_encode($templateParam)
]);
try {
$response = $client->sendSms($request);
if ($response->body->code === 'OK') {
echo "发送成功: " . $response->body->bizId;
} else {
echo "发送失败: " . $response->body->message;
}
return $response;
} catch (Exception $e) {
echo "错误: " . $e->getMessage();
}
}
// 使用
sendSms('13800138000', 'SMS_123456789', ['code' => '123456']);
?>
注意事项
模板参数格式
// 单个参数
{"code":"123456"}
// 多个参数
{"name":"张三","product":"阿里云"}
常见错误码
| 错误码 | 说明 | 解决方法 |
|---|---|---|
| OK | 成功 | |
| isv.MOBILE_NUMBER_ILLEGAL | 手机号非法 | 检查手机号格式 |
| isv.BUSINESS_LIMIT_CONTROL | 业务限流 | 降低发送频率 |
| isv.SIGN_NAME_NO_MATCH | 签名不匹配 | 检查签名和模板 |
| isv.SMS_SIGNATURE_SCENE_ILLEGAL | 签名场景非法 | 审核签名 |
最佳实践
- 频率限制:单手机号每天不超过10条
- 重试机制:失败后间隔1分钟重试,最多3次安全**:不要包含特殊字符和链接
- 性能优化:使用连接池,批量发送建议每次100条
需要我提供更详细的错误处理或批量发送示例吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播