imaplib代理身份验证

时间:2013-07-31 12:31:49

标签: python imap imaplib

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

“imaplib.error:PROXYAUTH命令错误:BAD ['无法识别的命令']”

这是我正在使用的代码:

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()

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

2 个答案:

答案 0 :(得分: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的详细信息,请参阅http://tools.ietf.org/html/rfc4959

-Rick

答案 1 :(得分:0)

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

正确的“代理身份验证”方式取决于您的特定IMAP服务器实施;你必须查阅它的文档。有可能是通过AUTHENTICATE命令实现的。