gpt4 book ai didi

delphi - Pascal Synapse 错误处理

转载 作者:行者123 更新时间:2023-12-03 15:48:22 24 4
gpt4 key购买 nike

我在 Lazarus 中编写了一些代码/FreePascal使用 Synapse IMAPSend 库单元。我尝试通过 SSL (IMAPS) 登录 IMAP 服务器,但对 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 的回答以及 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.dlllibeay32.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(我认为这可能有所帮助)。

最佳答案

您是否尝试过 Synapse 的 synadbg 单元?

imap := TIMAPSend.create;
imap.Sock.OnStatus := TSynaDebug.HookStatus;
imap.Sock.OnMonitor := TSynaDebug.HookMonitor;

然后应用程序创建一个扩展名为“.slog”的日志文件。也许您可以在日志文件中找到更多详细信息。

关于delphi - Pascal Synapse 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17748660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com