我有一些使用Synapse库单元用Lazarus / FreePascal编写的代码。我尝试通过 SSL (IMAPS) 登录到 IMAP 服务器,但调用失败。 IMAPSend
Login
我试过检查异常 - 没有抛出异常。
Wireshark 除了与适当的服务器和端口进行 TCP 三次握手外,什么也没有显示。
这是代码
function GetImapResponse(host, port, user, pass:String): String;
var
response: String = '';
imap: TIMAPSend;
no_unseen: integer;
begin
imap := TIMAPSend.create;
try
imap.TargetHost := host; //'10.0.0.16';
imap.TargetPort := port; //'993';
imap.UserName := user; //'red';
imap.Password := pass; //'********';
imap.AutoTLS := false;
imap.FullSSL := true;
response := response + 'IMAP login to '+user+'@'+host+':'+port+' ... ';
if imap.Login then
begin
response := response + 'Logged in OK. ';
// How many unseen?
no_unseen := imap.StatusFolder('INBOX','UNSEEN');
Form1.Label2.Caption := IntToStr(no_unseen);
response := 'INBOX contains ' + IntToStr(no_unseen) + ' unseen messages. ';
end
else
begin
response := response + 'IMAP Login failed. ';
end;
except
on E: Exception do
begin
response := response + 'Exception: ' + E.Message;
showMessage(response);
end;
end;
{
finally
imap.free;
response := response + 'Finally. ';
end;
}
Result := response;
end;
这是这个函数的字符串结果
IMAP login to red@10.0.0.16:993 ... IMAP Login failed.
问题:有没有办法查看 IMAPSend 认为发生的事情的一些细节?
更新 1
如SimaWB
's answer 和评论中所示Arioch 'The
mySynaDebug := TsynaDebug.Create;
imap.Sock.OnStatus := @MySynaDebug.HookStatus;
imap.Sock.OnMonitor := @MySynaDebug.HookMonitor;
生成了一个 projectname.slog 文件,其中包含
20130722-103643.605 0011F230HR_SocketClose:
20130722-103643.609 0011F230HR_ResolvingBegin: 10.0.0.16:993
20130722-103643.620 0011F230HR_ResolvingEnd: 10.0.0.16:993
20130722-103643.623 0011F230HR_SocketCreate: IPv4
20130722-103643.628 0011F230HR_Connect: 10.0.0.16:993
20130722-103643.631 0011F230HR_Error: 10091,SSL/TLS support is not compiled!
所以我正在前进:-)
我确实在我的项目文件夹中有libssl32.dll
和libeay32.dll
,但会检查我是否有正确的版本,并用鸡内脏做了正确的事情。
更新 2:
我使用的是 64 位版本的 Lazarus。OpenSSL DLL 是 Synapse 的 ssl_openssl 单元动态加载的 32 位 DLL。我安装了 32 位版本的 Lazarus/FPC,现在我的 IMAP/SSL 客户端程序可以按预期编译和工作。
当前的 64 位 Lazarus/FPC 二进制发行版(v1.0.10/2.6.2)似乎无法交叉编译到 i386(我认为这可能有帮助)。