我制作了一个连接到 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[]
时,我得到了一些输出,但脚本没有显示任何内容。有什么想法吗?
最佳答案
您的脚本有几个语法错误,我认为您根本没有尝试研究 IMAP 语法。
send "1 login picard enterprise\r"
这是正确的,前提是登录名和密码不包含空格或其他奇怪的字符,并且当您在那里键入\r 时 Expect 实际上发送\r\n。
send "2 list '' '*'\r"
''
不是 IMAP,IMAP 使用 ""
。
send "3 EXAMINE INBOX\r"
3 之后的空格太多了。空格在 IMAP 中不是幂等的;如果协议(protocol)规定使用一个空格,则您必须只使用一个空格,不能多也不能少。
send "4 fetch 1 all\r"
send "5 fetch 1 body[]\r"
ALL
and BODY[]
overlap ,你为什么要发送两个?您可以只发送 4 FETCH 1 (FLAGS INTERNALDATE BODY[])
并在不重复的情况下获取相同的数据。
关于linux - 在 imap2 中获取结果以显示在控制台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944984/