我在 PHP 中制作了一个自定义脚本,我正在使用 gammu/wammu 发送短信,但我无法弄清楚如何在短信中添加换行符。
我努力了
\n
\r
\t
0x0a
0x0d
&10;
但这些都不起作用。
我在 PHP 中制作了一个自定义脚本,我正在使用 gammu/wammu 发送短信,但我无法弄清楚如何在短信中添加换行符。
我努力了
\n
\r
\t
0x0a
0x0d
&10;
但这些都不起作用。
你试过\r\n
吗?在我看来,SMS 既需要回车又需要换行。我看到的另一个地方说使用%0a%0d
,这可能有效,但似乎是他们的服务而不是一切。不过我会试一试。无论哪种方式,您都需要确保将0x0A
and 0x0D
(两个十六进制字符)传递给发送 SMS 的服务。
看到这里我提到的那个网站%0a%0d
,它也有一个 SMS 字符集的图表。
Even though this question was asked ages ago, i thought i might add this as a reference.
Through my testing i found that it depends on the quotes you use. Use " (double quotes) instead of single for it to format the message properly and use \n or \r.
Hope this helps.
Cheers :)
我也不能让它在 gammu-smsd 中工作,我真的需要能够在短信中发送一个真正的换行字节码。我已经用谷歌搜索了几天,搜索了 gammu 代码库。我不知道它是否/在哪里被困,但无论我如何进入我的 sqlite3 gammu-smsd,它不是在另一端出现的换行符(machine2machine sms)。
我不需要 CR/LF,我只需要在可变字符串模板之后发送带有 \n 的模板,在基于 sms 的跟踪器中使用它
更新,我想出了一种让它发送我想要的东西的方法。因为我使用的是带有 gammu 的 sqlite3 数据库,所以这个小 PHP 程序让我将消息发送到移动资产并在那里被接受:
$sms_template=<<<EOD
insert into outbox ( TextDecoded , DestinationNumber, DeliveryReport, CreatorID) values ('%s','%s','yes','auto');
EOD;
$number=1243456;
$terminator=sprintf("%s",chr(10));
$db = new SQLite3("/var/spool/gammu/smsd.sqlite");
$sms='SRV=12171%s';
$sql=sprintf($sms_template, sprintf($sms, $terminator), $number);
$db->exec($sql);
这实际上将短信很好地存储在发件箱中,并且真正的换行符到达目的地。真的希望这可以帮助某人。此代码已从私有内容中剥离,可能无法完全按照显示的方式工作,但我使用了类似的脚本。
格伦
答案可能很晚,但作为对我来说非常有用的参考:
echo -e "Hello\nWorld" | gammu ....