私はJosephとBen AlbahariのCuts 4.0 in a Nutshellを読んでいて、POP3を使ってメールを読むNetworkingの章でこのコードを見つけました。 POP3には、わかっているように定義されたコミュニケーションがあります。この章でコードを使用すると、それはうまくいくはずですが、そうではないことが明らかです。これはコードですGmailを使ってメールを読む
private static string ReadLine(Stream stream)
{
List<byte> list = new List<byte>();
while (true)
{
int b = stream.ReadByte();
if (b == 10 || b < 0) break;
if (b != 13) list.Add((byte)b);
}
return Encoding.UTF8.GetString(list.ToArray());
}
private static void SendCommand(Stream stream, string line)
{
byte[] byteArr = Encoding.UTF8.GetBytes(line + "\r\n");
stream.Write(byteArr, 0, byteArr.Length);
string response = ReadLine(stream);
if (!response.StartsWith("+OK"))
throw new Exception("Pop exception: " + response);
}
static void Main(string[] args)
{
using (TcpClient client = new TcpClient("pop.gmail.com", 995))
{
using (NetworkStream stream = client.GetStream())
{
ReadLine(stream);
}
}
コードはメールをダウンロードしないという意味では不完全です。私はちょうど私たちがGmailから得た1回目の応答を見てみようとしていました。しかし残念ながら、プログラムはちょうどReadByte
のReadLine
メソッドに固執しています。
+OK Hello there.
私のプログラムはちょうどハングアップします。このページごとの通り:
http://mail.google.com/support/bin/answer.py?answer=13287
あなたは私が行っている、まさにあるpop.gmail.comに接続する必要があります。誰も私に不足していることを教えてもらえますか?
注:この種の処理を行うサードパーティのプロジェクトは私には送信しないでください。私はそれを使うのがとても簡単だと分かっています。しかし、私はちょうどフードの下で何が起こるかを見ようとしています。私のプログラム自体にバグがあるのを見つけたら、私の方がいいでしょう。
ありがとうございました。
を必要とは、あなたがGmailの設定でPOP3をeanbledがありますか? – Zenwalker
@zenwalker:はい私は有効にしましたが、これまでに書いたプログラムとは何の関係もありません。ちょっと待ってください。 Gmailからのメッセージ。このステップの後、ユーザ名とパスワードを入力するステップが来ます。しかし、私の最初のステップ自体は機能していません。 – TCM
ストリームが開かれているかどうかを確認してください。プログラムをデバッグし、ストリームがポート995から読み取れるものを確認してください – Zenwalker