未发送使用 PHP 的阿拉伯语 Gammu SMS
Gammu SMS in Arabic using PHP does not be delivered
我正在尝试使用 PHP 在我的服务器上拥有自己的 SMS 网关。我已经安装了 Gammu,并且我配置了权限和设置。现在它可以使用以下原型脚本正常发送 SMS:
<?php
$text = $_POST['text'];
$numb = $_POST['numb'];
if ($text != '' && $numb != ''){
//die('echo "'.$text.'" | gammu --sendsms TEXT '.$numb);
echo "<pre>";
//die(passthru('whoami'));
$command = 'echo "'.$text.'" | gammu --sendsms TEXT '.$numb.' >> '.__DIR__.'/smslog.txt';//.'" | gammu --sendsms TEXT '.$numb;
echo passthru($command);
//echo $command;
}
else{
?>
<form method="POST">
<input type="text" name="numb">
<textarea name="text"></textarea>
<input type="submit">
</form>
<?php
}
?>
然而,英文文本(拉丁文)SMS 一切正常,但尽管运营商回复 OK,但尝试发送阿拉伯文 SMS 却未能送达目的地,
Sending SMS 1/1....waiting for network answer..OK, message reference=18
此外,我注意到,从终端使用相同的 gammu 命令和阿拉伯文本,它交付良好,但具有 ?? ??????? ???
文本表示。我部分地认为这是编码问题,但我不知道如何解决它。
我的服务器是 Ubuntu Linux 16.04。
更新:
我已经弄清楚如何使用 gammu 命令从 bash 发送阿拉伯语文本,如下所示,其中使用了 -unicode
选项:
gammu sendsms TEXT 022222222 -unicode -text "نص عربي"
However, the script regarded above, send the Arabic message but it look something like 333333333
on the phone. I have no any idea about what
occurred to the string when it send to the command stream via
passthru
and I tried to use exec
also and the same result.
最终在阅读 this section of documentation 和多次尝试后,我发现正确的命令选项如下所示:
gammu -c /etc/gammurc sendsms TEXT 02222000 -unicode -textutf8 "نص عربي"
在上面的示例中,使用了 -textutf8
而不是 -text
。另外,请注意 -c
配置文件路径是可选的,以确保将使用什么设备。
我正在尝试使用 PHP 在我的服务器上拥有自己的 SMS 网关。我已经安装了 Gammu,并且我配置了权限和设置。现在它可以使用以下原型脚本正常发送 SMS:
<?php
$text = $_POST['text'];
$numb = $_POST['numb'];
if ($text != '' && $numb != ''){
//die('echo "'.$text.'" | gammu --sendsms TEXT '.$numb);
echo "<pre>";
//die(passthru('whoami'));
$command = 'echo "'.$text.'" | gammu --sendsms TEXT '.$numb.' >> '.__DIR__.'/smslog.txt';//.'" | gammu --sendsms TEXT '.$numb;
echo passthru($command);
//echo $command;
}
else{
?>
<form method="POST">
<input type="text" name="numb">
<textarea name="text"></textarea>
<input type="submit">
</form>
<?php
}
?>
然而,英文文本(拉丁文)SMS 一切正常,但尽管运营商回复 OK,但尝试发送阿拉伯文 SMS 却未能送达目的地,
Sending SMS 1/1....waiting for network answer..OK, message reference=18
此外,我注意到,从终端使用相同的 gammu 命令和阿拉伯文本,它交付良好,但具有 ?? ??????? ???
文本表示。我部分地认为这是编码问题,但我不知道如何解决它。
我的服务器是 Ubuntu Linux 16.04。
更新:
我已经弄清楚如何使用 gammu 命令从 bash 发送阿拉伯语文本,如下所示,其中使用了 -unicode
选项:
gammu sendsms TEXT 022222222 -unicode -text "نص عربي"
However, the script regarded above, send the Arabic message but it look something like
333333333
on the phone. I have no any idea about what occurred to the string when it send to the command stream viapassthru
and I tried to useexec
also and the same result.
最终在阅读 this section of documentation 和多次尝试后,我发现正确的命令选项如下所示:
gammu -c /etc/gammurc sendsms TEXT 02222000 -unicode -textutf8 "نص عربي"
在上面的示例中,使用了 -textutf8
而不是 -text
。另外,请注意 -c
配置文件路径是可选的,以确保将使用什么设备。