1

How to login to a Gmail account and get number of messages in a mailbox with TIdIMAP4? で TLama が提供する Gmail に接続するコードを実行する と、Delphi 5 と Delphi 2007 ではうまく機能します。

Delphi XE3 で同じコードを試してみましたが、奇妙なことに、IDE で、または \win32\debug ディレクトリで生成された exe をファイル エクスプローラーから直接起動すると、「ソケット エラー #10061 接続が拒否されました」というエラーが発生しました。\Win32\release ディレクトリに生成された .exe を起動すると、正常に動作します。

ssleay32.dll と libeay32.dll をあらゆる種類のディレクトリに配置しようとしましたが、それでも機能せず、それに関連しているかどうかもわかりません。

Delphi XE3 の Indy はバージョン 10.5.9.0 です。(もともと私の Delphi XE3 Update 1 に同梱されていたもの)。

どんな助けでも大歓迎です!

4

1 に答える 1

0

ソケットエラー10061は、次の2つのいずれかを意味します。

  1. 接続をまったくリッスンしていないIP/ポートに接続しようとしました。

  2. 接続をリッスンしているIP/ポートに接続しようとしましたが、その特定の時点で新しいクライアント接続を受け入れるための使用可能なスロットがありません。

クライアント側で2つの可能性を区別する方法はありません。

Indyがデバッグビルドとリリースビルドでソケットを管理する方法に違いはありません。表示されている問題はDLLとは関係ありません。これは、基になるソケット接続が最初に確立されるまで呼び出されないためです(ただし、必要に応じて、ユニットIdOpenSSLSetLibPath()内のIndyの関数を使用IdSSLOpenSSLHeadersして、DLLの場所をIndyに通知できます)。 。

Portを呼び出すときは、プロパティを再確認してくださいConnect()。プロパティを設定すると、UseTLS実際にPort値が変更される可能性があります。両方のプロパティを設定する必要がある場合は、UseTLS最初に設定Portしてから、Indyが割り当てた値とは異なる値を使用する必要があるかどうかを設定します。

于 2013-01-04T21:03:28.840 に答える