将特殊字符传递到 telnet Unix

Passing Special Characters into telnet Unix

我使用以下命令通过 SMS 适配器发送 SMS 消息:

telnet localhost 0000 <<-EOF 
helo x
MAIL FROM: Test
RCPT TO: 447999999999
DATA

Test £1234
.
logout
quit
EOF

然而,每当我收到消息时,它的格式都是:

Test ?£1234

追加 ?在 £ 符号的前面,我尝试研究了一些方法,包括 MIME,但不太确定它们是如何实现的。

关于如何停止并允许 £

成功传递的任何想法

在某些安装中,默认情况下 telnet 不是 8 位干净的(它不识别 8 位字符编码,例如 Unicode)。为了能够将 Unicode 击键发送到远程主机,您需要将 telnet 设置为 "outbinary" 模式。有两种方法可以做到这一点:

$ telnet -L <host>

$ telnet

telnet> set outbinary

telnet> open <host>

Source

您是否尝试过先对邮件进行编码?您可以使用 UTF-8 字符集中的 base64 来执行此操作:- 例如 转变: 味精=“£1234” 到: 味精="wqMxMjM0"

注意:尝试使用在线转换器测试 encoding/decoding - https://www.base64encode.org/

对文本进行编码后,您可以通过在 telnet 中的 DATA 命令后添加 MIME 详细信息来通过 telnet 发送消息,方法是指定 MIME 类型,示例脚本如下:-

telnet localhost 0000 <<-EOF 
helo x
MAIL FROM: Test
RCPT TO: 447999999999
DATA
Subject: Test
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

${msg}
.
logout
quit
EOF

希望对您有所帮助。