1

我在 PHP 中制作了一个自定义脚本,我正在使用 gammu/wammu 发送短信,但我无法弄清楚如何在短信中添加换行符。

我努力了

  • \n
  • \r
  • \t
  • 0x0a
  • 0x0d
  • &10;

但这些都不起作用。

4

4 回答 4

1

你试过\r\n吗?在我看来,SMS 既需要回车又需要换行。我看到的另一个地方说使用%0a%0d,这可能有效,但似乎是他们的服务而不是一切。不过我会试一试。无论哪种方式,您都需要确保将0x0Aand 0x0D(两个十六进制字符)传递给发送 SMS 的服务。

看到这里我提到的那个网站%0a%0d,它也有一个 SMS 字符集的图表。

于 2012-05-21T18:16:37.783 回答
0

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 :)

于 2014-04-08T14:44:00.750 回答
0

我也不能让它在 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);

这实际上将短信很好地存储在发件箱中,并且真正的换行符到达目的地。真的希望这可以帮助某人。此代码已从私有内容中剥离,可能无法完全按照显示的方式工作,但我使用了类似的脚本。

格伦

于 2012-05-25T14:32:09.053 回答
0

答案可能很晚,但作为对我来说非常有用的参考:

echo -e "Hello\nWorld" | gammu ....
于 2021-10-18T21:16:33.430 回答