2013-07-31 75 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