1

我在使用 imap 时遇到了一些问题。我要做的是编写一个脚本,该脚本将使用 imap 连接到我们的语音邮件服务器并下载所有消息。我已经能够使用个人帐户登录,但是当我尝试使用“proxyauth”以管理员身份登录并代理到另一个订阅者的邮箱时,我收到以下错误:

“imaplib.error:PROXYAUTH 命令错误:BAD ['Unrecognized command']”

这是我正在使用的代码:

c = imaplib.IMAP4("x.x.x.x")
c.login_cram_md5("admin", "******")
c.proxyauth("7001")

type, data = c.select()

try:
    c.select('INBOX', readonly=True)

    for i in c.search(None, 'All')[1][0].split():
        print "\n===================================="
        print "Reading Message: " + str(i) + "..."
        print "====================================\n"
        typ, msg_data = c.fetch(str(i), '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                print email.message_from_string(str(msg_data[0][1]))

finally:
    try:
        c.close()
    except:
        pass
c.logout()

任何关于我可能做错的想法将不胜感激!

4

2 回答 2

1

PROXYAUTH 是一个旧的 Netscape IMAP 服务器扩展。

查看您的服务器是否支持 AUTHENTICATION PLAIN。在端口 143 上 Telnet,登录并发出 CAPABILITY 命令,并在响应中查找 AUTH=PLAIN。例如:

telnet <server> 143
* OK IMAP Server ready
1 login user password
1 OK completed
1 capability
* CAPABILITY IMAP4 IMAP4REV1 ACL NAMESPACE UIDPLUS IDLE LITERAL+ QUOTA ID MULTIAPPEND LISTEXT CHILDREN BINARY LOGIN-REFERRALS UNSELECT STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5 AUTH=GSSAPI AUTH=MSN AUTH=NTLM

有关 AUTHENTICATION PLAIN 的详细信息,请参阅https://www.rfc-editor.org/rfc/rfc4959

-瑞克

于 2013-08-01T15:29:55.917 回答
0

IMAP 服务器告诉您它无法识别该PROXYAUTH命令。标准 IMAP 中没有这样的命令。

作为其他人“代理身份验证”的正确方法取决于您特定的 IMAP 服务器实现;您将不得不查找它的文档。很可能它是通过AUTHENTICATE命令实现的。

于 2013-08-01T11:46:43.200 回答