You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Clickatell REST API在PHP中发送阿拉伯语短信?

解决Clickatell API发送阿拉伯语短信的常见问题

从你提供的代码来看,大概率是在发送阿拉伯语短信时遇到了编码问题、JSON格式错误,或者API请求验证类的问题。我帮你拆解下可能的问题点,以及对应的修正方案:

1. 手动拼接JSON的潜在风险

你当前手动构造$to和POST请求体的方式很容易出现转义错误,比如$to="[\"<mobile number>\"]";这种写法如果号码格式不对或者转义处理不当,会直接导致API无法解析请求。推荐用json_encode自动生成合规的JSON格式,彻底避免手动拼接的失误:

// 正确构造目标号码数组(记得带国家代码,比如+966开头的沙特号码)
$to = ["966123456789"];

2. 阿拉伯语文本编码的优化

你用unpack转码的逻辑是可行的,但可以用更简洁直观的bin2hex替代,同时确保编码转换过程中没有字符丢失:

$text = "غثس هفس خن";
// 将UTF-8转成Clickatell要求的UCS-2BE编码
$ucs2Text = iconv('UTF-8', 'UCS-2BE', $text);
// 转成十六进制并统一大写
$message = strtoupper(bin2hex($ucs2Text));

3. 不安全的SSL设置需调整

你关闭了SSL证书验证(CURLOPT_SSL_VERIFYHOST=0和CURLOPT_SSL_VERIFYPEER=0),这在生产环境不仅存在安全风险,还可能被服务器拒绝请求。建议直接移除这两行,让CURL自动验证SSL证书。

4. 完整修正后的代码

把以上优化点整合后,完整的可运行代码如下:

<?php
$to = ["966123456789"]; // 替换为实际目标号码(带国家代码)
$text = "غثس هفس خن";

// 处理阿拉伯语文本编码
$ucs2Text = iconv('UTF-8', 'UCS-2BE', $text);
$message = strtoupper(bin2hex($ucs2Text));

$authToken = "3fUXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.clickatell.com/rest/message");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

// 用json_encode生成请求体,彻底避免手动拼接的格式错误
$postData = [
    "text" => $message,
    "to" => $to
];
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "X-Version: 1",
    "Content-Type: application/json",
    "Accept: application/json",
    "Authorization: Bearer $authToken"
));

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close($ch);

// 调试输出,快速定位问题
if ($err) {
    echo "cURL错误: " . $err;
} else {
    $responseArray = json_decode($response, true);
    print_r($responseArray);
}
?>

5. 快速排查问题的技巧

如果还是发送失败,一定要查看API返回的响应内容:

  • 若返回401错误,说明你的authToken无效或者权限不足;
  • 若返回400错误,大概率是请求体格式错误(比如号码格式不符合要求);
  • 若返回500错误,可能是Clickatell服务器端临时故障,稍后重试即可。

内容的提问来源于stack exchange,提问作者Muhammed Shihabudeen Labba A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:15:07