4

メールを読むものを作ろうとしていますが、何も動作しません。このコード:

TcpClient c = new TcpClient();
c.Connect("imap.gmail.com", 993);
NetworkStream stream = c.GetStream();
stream.ReadTimeout = 1000;
stream.ReadByte();

ダウンロードしたコードが壊れる場所に継ぎ目があります。最後の行は、次のメッセージとともに IOException をスローします。 "

私は、私が読める形式で電子メールを自動的にダウンロードするサードパーティのプログラムに落ち着くでしょう. Thunderbird で gmail に接続できるようになったので、問題は確実に私の側にあります。

4

4 に答える 4

0

Gmail IMAP は SSL を使用するため、ネットワーク ストリームをラップしてメソッドSslStreamを呼び出す必要がありますAuthenticateAsClient(SSL ハンドシェイク/サーバー認証マジックを実行するため)。その後、通常の (非 SSL) ストリームであるかのように対話します。

TcpClient c = new TcpClient();
c.Connect("imap.gmail.com", 993);
SslStream sslStream = new SslStream(c.GetStream());
sslStream.ReadTimeout = 1000;
sslStream.AuthenticateAsClient("imap.gmail.com");
sslStream.ReadByte();
于 2013-04-03T18:07:44.587 に答える
0

このメッセージは、リモート サーバーが応答しなかったことを示しています。「このポートでは接続が許可されていません」とは言いませんでした。「接続を閉じます」とは言いませんでした。それは何も言わなかった。

これは、TCP レベルで接続を作成することさえできないことを意味します。これを試して:

telnet imap.gmail.com 993

失敗します。したがって、それはあなたのアプリケーションとは何の関係もありません。

于 2012-11-24T22:24:16.153 に答える
0

openssl を使用して gmail に接続します。物事を成し遂げる簡単な方法です。

于 2013-04-03T16:45:36.663 に答える
0

SSL ポートで接続しています。適切な SSL ハンドシェイクを行わないと、データを送信せずにすぐに接続が閉じられます。

于 2012-11-24T21:54:56.817 に答える