获取结果在imap2中显示在控制台中

时间:2015-01-14 14:13:17

标签: linux shell imap telnet

我制作了一个连接到imap服务器然后发送不同消息的脚本,以便获取第一封邮件[我只需要第一封邮件]。 当我运行脚本时,我没有得到任何结果,但是当我在终端中键入相同的最后一个命令时,我得到一个结果。

知道如何解决这个问题吗?

我的剧本:

#!/usr/bin/expect
#!/bin/bash
set password 'ent'
spawn telnet host imap2
send "1 login picard enterprise\r"
send "2 list '' '*'\r"
expect "*"

send "3  EXAMINE INBOX\r"
send "4 fetch 1 all\r"

send "5 fetch 1 body[]\r"

正如我之前所说,当我在终端输入5 fetch 1 body[]时,我会得到一些输出,但脚本没有显示任何内容。有什么想法?

1 个答案:

答案 0 :(得分:1)

您的脚本有几个语法错误,我认为您根本没有尝试过研究IMAP语法。

send "1 login picard enterprise\r"

这是正确的,前提是登录名和密码不包含空格或其他奇数字符,并且当您在其中键入\ r时,Expect实际发送\ r \ n。

send "2 list '' '*'\r"

''不是IMAP,IMAP使用""

send "3  EXAMINE INBOX\r"

3.在IMAP中空间不是幂等的,你有一个太多的空间;如果协议说要使用一个空间,你必须使用一个,不论是也不是更少。

send "4 fetch 1 all\r"
send "5 fetch 1 body[]\r"

ALL and BODY[] overlap,你为什么送两个?您只需发送4 FETCH 1 (FLAGS INTERNALDATE BODY[])即可获得相同的数据而无需重复。