【发布时间】:2015-03-12 18:10:26
【问题描述】:
我制作了一个脚本,连接到 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 中使用较长的标签(
A001 login ...而不是1 login ...)以允许脚本等待命令完成。你能试试send "A005 FETCH 1 BODY[]\r\n"expect "A005" -
你可以称之为作弊,但如果你真的想在
except中访问 IMAP,你可以使用 Tcl 的imap4包(expect脚本只是 Tcl 代码):docs.activestate.com/activetcl/8.4/tcllib/imap4/…。如果您尚未安装 Tcllib,则需要安装它,但作为奖励,您还可以通过使用 TLS 获得更好的安全性(请参阅我链接到的页面顶部)。