2013-07-31 41 views
1

我在使用imap时遇到了一些麻烦。 我想要做的是编写一个脚本,它将使用imap连接到我们的语音邮件服务器并下载所有消息。 我已经能够使用个人帐户登录,但是当我尝试使用“proxyauth”以管理员身份登录并将代理登录到其他用户的邮箱时,出现以下错误:imaplib代理认证

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

什么我可能是做错了任何想法,将不胜感激!

+1

Proxyauth是一个扩展,你的服务器不支持它吗? – Max

+0

谢谢。有没有办法确定? – LevEidel

+0

什么是您的服务器供应商?我还没有看到任何支持PROXYAUTH的常用IMAP服务器。 – Max

回答

0

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

像其他人一样,“代理验证”的正确方式取决于您的特定IMAP服务器实现;你将不得不查阅它的文档。很可能是通过AUTHENTICATE命令实现的。

+0

谢谢你的提示。我正在使用的特定服务器是使用Courier作为IMAP/POP3服务器的Avaya CMM语音邮件服务器。我会尽量深入挖掘一下做这项工作的方法。 – LevEidel

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