2011-10-19 13 views
0

私は自分のGmailの受信トレイにjavaでアクセスしようとしています(java mail apiではなく)socketを使っています。 接続は正常に確立されていますが、受信トレイの選択コマンドは認識されません。ここに私のコードです。出力が得られます。gmail imap悪いJavaの不明なコマンド

SSLSocketFactory sslsocketfactory = HttpsURLConnection.getDefaultSSLSocketFactory(); 
    SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("imap.gmail.com", 993); 

    BufferedReader sin = new BufferedReader(new InputStreamReader(sslsocket.getInputStream())); 
    PrintWriter output = new PrintWriter(new OutputStreamWriter(sslsocket.getOutputStream())); 

String line; 
output.println("A004 LOGIN my-mail-here my-pass-here"); 
    output.println("A005 SELECT [GMAIL]/myinbox"); 
    output.println("A006 LOGOUT"); 
    output.flush(); 
    while ((line = sin.readLine()) != null) 
    System.out.println(line); 

、ここで私が手に出力されます:

* OK Gimap ready for requests from 78.185.154.27 o19if1214052bkq.44 
A005 BAD Unknown command o19if1214052bkq.44 
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE 
A004 OK [email protected] my-name my-surname authenticated (Success) 

問題であるかもしれないもの?ログインは機能しますが、選択は機能しません。私は始動を試みたが、それも動作しません。

答えて

1

あなたはそれが間違ってやっているので:)

005 SELECT myinbox 

は何をしようとするでしょう。

物事のこれらの種類をテストするための素晴らしい方法は、OpenSSLである

opensslのs_client -connect -crlf imap.gmail.com:993

は、ここに私のGmailアカウントを使用した例です。 *私が何を考え、言われては、起こっているLIST(\ HasChildren \ HasNoChildren) "/" "[Gmailの] /下書き"

003 select Drafts 
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $MDNSent Junk $Forwarded NonJunk) 
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $MDNSent Junk $Forwarded NonJunk \*)] Flags permitted. 
* OK [UIDVALIDITY 620224742] UIDs valid. 
* 0 EXISTS 
* 0 RECENT 
* OK [UIDNEXT 25] Predicted next UID. 
003 OK [READ-WRITE] Drafts selected. (Success) 

があることである

:私の下書きは、以下のように記載されていimapサーバーは非同期であり、selectコマンドを送信する前に認証を待っているわけではありません。そのため、出力にログイン結果の前にエラーが返されます。

+0

samet error with output.println( "A005 SELECT INBOX "); – nazgulll

+0

実際...私は何が起こっていると思いますか? imapサーバは非同期で、 'select'コマンドを送る前にあなたを認証するのを待っているわけではありません。そのため、あなたの出力のログイン結果の前にエラーが戻ってくるのです。ここでも、imapサーバーに直接接続することで実際のコマンドをテストできます。 –

+0

あなたは私がopensslをdonwloadedし、あなたが私に与えたパラメータと関連していると言った。私は自分のアカウントを接続することができますが、loginコマンドの後にselectコマンドを実行すると、不正なコマンドエラーが発生します – nazgulll