1

运行代码以连接到 TLama 提供的 Gmail 时, 如何使用 TIdIMAP4 登录到 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 表示以下两种情况之一:

  1. 您尝试连接到根本不侦听连接的 IP/端口。

  2. 您尝试连接到正在侦听连接的 IP/端口,但在该特定时刻没有任何可用插槽来接受新的客户端连接。

在客户端无法区分这两种可能性。

Indy 在 Debug 与 Release 版本中管理其套接字的方式应该没有区别。您看到的问题与 DLL 无关,因为直到首先建立底层套接字连接之后才会调用它们(但是,如果需要,您可以IdOpenSSLSetLibPath()在单元中使用 Indy 的函数IdSSLOpenSSLHeaders来告诉 Indy DLL 的位置) .

Port调用时仔细检查属性Connect()。设置UseTLS属性实际上可以更改Port值。如果您需要设置这两个属性,UseTLS请先设置,然后设置Port是否需要使用与 Indy 分配的值不同的值。

于 2013-01-04T21:03:28.840 回答