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

标签 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[] 时,我得到了一些输出,但脚本没有显示任何内容。有什么想法吗?

最佳答案

您的脚本有几个语法错误,我认为您根本没有尝试研究 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/

相关文章:

linux - 编程 Linux 网络驱动程序以支持关闭 TCP 校验和卸载

linux - 如何使用 sed 或 awk 命令根据另外两个变量的值设置一个变量

linux - 为 Linux (Gnome) shell 脚本创建 UI 的工具

python - 获取邮件未读内容,不影响未读状态

IMAP SEARCH 复杂查询

php - 如何准备APPEND IMAP命令?

linux - 使用 wget 时同时使用 -i 和 -O

linux - 如何为树莓派编译内核模块?

regex - 如何匹配awk中变量中给定的模式?

c++ - Linux 信号量,在 forked->exec'd 进程之间共享?