2011-10-18 13 views
1

最近私はJavaソケットに興味があり、Javaソケットを使ってGmailからメールを読みたいと思っています。出来ますか?javaソケットを使ってimapを使ってgmailからメールを読む方法

Socket s; 
s = new Socket("imap.gmail.com", 993); 
InputStream in; 
in = s.getInputStream(); 
BufferedReader sin = new BufferedReader(new InputStreamReader(in)); 
PrintWriter output = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); 
String line; 
output.println("a001 LOGIN my-e-mail my-pass"); 
output.flush(); 
while ((line = sin.readLine()) != null) 
System.out.println(line); 
s.close(); 

ソケットに接続したらどうすればよいですか?

ありがとうございます。 (注意:私はJavaメールAPIを使用したくない、物事はそれで本当に簡単になる、私はちょうどシーンの後ろに起こっているものを身近にするためにこの方法を選択しています)

編集コード。

答えて

2

ソケットを取得したら、そのソケットにIMAPプロトコルを実装します。

http://tools.ietf.org/html/rfc3501

+0

私は、このコマンドに 例を使用する必要がありますねOK:C:A001 LOGIN SMITHのSESAME S:A001 OK LOGINは最初 を完了し、自分のアカウントにログインする私がするOutputStreamWriterが、サーバーを使用してそれを行う私の応答を与えるものではありません – nazgulll

+0

出力をソケットにプッシュするためのflush()の呼び出しが呼び出される可能性があります。 – bmargulies

+0

ライアン・スチュワートの答えもまた適切です。このために独自のおもちゃのimapサーバーを実行するのがベストです。 – bmargulies

3

GmailアカウントでIMAPを熟知し得るようなものを感じた場合、あなたはそれの上にSSL/TLSを配置する必要があるとしています。すべてのGMailトラフィックは暗号化されています。

-1

+1です。

EDIT:はい、Javaソケットを使用してIMAPサーバーと話すことができますが、場合によってはJavaメールライブラリを使用するのではなく、そうすることをお勧めします。

javamailを使用するのが簡単です。それは明らかな解決策であるようにも見えますが、あなたがそのルートに行きたくない場合があります。

Javamailは、ほぼリアルタイムで通知を保持する必要がある多数の同時ユーザーがいるスケーラブルなデプロイメントでは、非常に不安定です。

jvmあたり1000人以上のユーザーにサービスを提供し、imap接続を作成するオーバーヘッドを低く抑えたい場合は、自分でソケットを実装し、ソケット自体にIMAPコマンドを書き込むことになります。言うまでもなく、AJAXを使用している場合、つまりユーザーに新しい電子メールを瞬時に配信するなどの利点があります。

瞬時メールに近いものは、ブラックベリーについて好きなものがいくつか残っています。 RIMの規模を考えると、私はIMAPの上でJavamailを使ってメールを送り出すとは思わない。それは非常に非能率的であろう。

+0

これはどのような質問に対する回答ですか? – user7116

+0

Answer ==ソケット自体にIMAPコマンドを書いてください。これを行う方法の完全な説明は、この人気コンテストの対象外です。 – RHT

+0

私のコメントは、あなたの答えを正接ではなく答えにすることを希望していました。私は既によく書かれておらず、(ここで明らかなように)適切に答えられるとは思わないので、質問を終えるよう投票しました。 – user7116

関連する問題