将特殊字符传递给telnet Unix

时间:2015-01-27 14:31:46

标签: unix ksh telnet mime

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

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

Test £1234
.
logout
quit
EOF

然而,当我得到消息时,它将采用以下格式:

Test ?£1234

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

关于我如何能够阻止并允许成功传递英镑的任何想法

2 个答案:

答案 0 :(得分:3)

您是否尝试过首先对邮件进行编码?您可以使用UTF-8字符集中的base64执行此操作: - 例如 兑换:     MSG = “1234£” 至:     MSG = “wqMxMjM0”

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

对文本进行编码后,您可以通过telnet发送消息,方法是在telnet中的DATA命令后添加MIME详细信息,方法是指定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

希望有所帮助。

答案 1 :(得分:1)

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

$ telnet -L <host>

$ telnet

telnet> set outbinary

telnet> open <host>

Source