Adsense_top

2010年1月27日水曜日

C# POP3への接続の続き(説明)

今日は、先日書いた「POP3へのログイン (リンクは別ウインドウで開きます)」の説明だけにしておきます。
その前にコードの訂正があります。「finally」ブロックの部分は、以下のように書かないと接続に失敗した時に、「finally」の所で例外が発生してしまうの可能性がありました。

finally
{
if(stream != null)
stream.Close();
if(tcp != null && tcp.Connected)
tcp.Close();
}

大体はコメントで分かると思いますが順に説明していきます。
1.サーバーとポートを指定して接続しています。
2.読み書き時のタイムアウト時間を設定しています。例では、30秒(30000ミリ秒)固定にしていますが、Outlookなどのデフォルトは60秒なので、サーバーなどに合わせて調整出来るようにした方が良かった思います。
3.「TcpClient.GetStream()」で取得した「NetworkStream」を、そのまま使って読み書きしても良いのですが、コードが簡単になるので、今回は StreamReader / StreamWriterを取得しています。
4.「result = reader.ReadLine();」は、サーバーからの応答を読みとっています。
5.「if(!result.StartsWith("+OK"))」は、応答が正常を表す「+OK」で始まっていない場合は、例外をスローしています。(if(result.StartsWith("-ERR"))でも可)
6.後は「USER」コマンドでユーザー名(アカウント)、「PASS」コマンドでパスワードを送り、認証されログイン出来たのち「QUIT」コマンドで接続を切断しています。


大体こんな感じです。
このままではメール受信もなにも出来ていないので、もう少し実用的な感じにして次の機会に書きます。


0 件のコメント:

コメントを投稿