Обработка ошибок Pascal Synapse
У меня есть код, написанный в Lazarus/FreePascal , использующий Синапс IMAPSend библиотечный блок. Я пытаюсь войти на сервер IMAP по протоколу SSL (IMAPS), но вызов 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 [email protected]:993 ... IMAP Login failed.
Вопрос: есть ли способ увидеть некоторые детали того, что, по мнению IMAPSend, произошло?
Обновление 1
Как показано в ответе SimaWB плюс комментарии Arioch 'The
mySynaDebug := TsynaDebug.Create;
imap.Sock.OnStatus := @MySynaDebug.HookStatus;
imap.Sock.OnMonitor := @MySynaDebug.HookMonitor;
Произвел имя проекта.файл 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-битную версию Лазаря. Библиотеки DLL OpenSSL - это 32-разрядные библиотеки DLL, которые модуль ssl_openssl Synapse загружает динамически. Я установил 32-разрядную версию Lazarus/FPC, и теперь моя клиентская программа IMAP / SSL компилируется и работает так, как ожидалось.
Похоже, что текущий 64-битный двоичный дистрибутив Lazarus/FPC (v1. 0. 10/2. 6. 2) не может скомпилироваться до i386 (что, я думаю, могло бы помочь).
3 ответов:
Вы пробовалиsynadbg блок синапса?
imap := TIMAPSend.create; imap.Sock.OnStatus := TSynaDebug.HookStatus; imap.Sock.OnMonitor := TSynaDebug.HookMonitor;Затем приложение создает файл журнала с расширением '.слог". Возможно, вы найдете более подробную информацию в файле журнала.
Та же ошибка в .slog файл на Ubuntu 64-бит был исправлен с "sudo apt-get install libssl-dev "и включая" ssl_openssl " в разделе uses.
Проблема здесь:
imap.AutoTLS := false; imap.FullSSL := true;попробуйте установить true в false и false в true... а порт должен быть 587
Comments