Delphi Indy : SSL 라이브러리를 처음로드 할 수 없습니다. 재 시도가 작동합니다

StackOverflow https://stackoverflow.com/questions/2424290

  •  19-09-2019
  •  | 
  •  

문제

최신 Indy Snapshot (어제 설치)과 최신 SSL 라이브러리를 사용하고 있습니다.

IDSMTP를 사용하여 메일을 보내려고 할 때 구성 요소가 처음 연결되면 예외가 발생합니다.

SSL 라이브러리를로드 할 수 없습니다

. 재미있는 것은, 재시 도는 항상 작동한다는 것입니다. 디버깅 문제가 issslopensslheader, function loaad : boolean, line에 있다는 것을 알았습니다.

@OpenSSL_add_all_algorithms := LoadFunctionCLib('OpenSSL_add_all_algorithms');

왜 처음에는 실패하고 두 번째가 아닌 이유는 여전히 나에게 미스터리입니다.

도움이 되었습니까?

해결책

사용중인 코드는 최신 스냅 샷이 아닙니다. 그 버그는 몇 주 전에 고정되었습니다. 당신이 견적 한 줄은 최신 코드에 있지 않으며 다음과 같이 대체되었습니다.

fn_OPENSSL_add_all_algorithms_noconf = 'OPENSSL_add_all_algorithms_noconf';
fn_OpenSSL_add_all_algorithms = 'OpenSSL_add_all_algorithms';

@OpenSSL_add_all_algorithms := LoadOldCLib(fn_OpenSSL_add_all_algorithms, fn_OPENSSL_add_all_algorithms_noconf);

다른 팁

Win 7/64에서 Delphi XE-1을 사용하고 있으며 기본적으로 설치된 SSL과 Indy와 함께 사용하고 있습니다. 이번 주에 나는 SMTP 및 SSL과 함께 일을해야했고, 당신이보고 한 것과 같은 문제를 해결했습니다. 우리의 응용 프로그램은 다소 복잡하고 이미 여러 위치에 살고 있으며 배치되어 있으며 코드의 여러 지점에서 Indy를 사용하므로 최신 버전의 Indy 및 Rebuilding 등을 설치하는 것은 그다지 맛이 좋지 않았습니다.

문제는 첫 번째 패스에서만 발생하므로 코드 중 일부를 추적 하고이 단순하고 고통스러운 해결 방법을 제시했습니다.

            smtpClient.connect;
            smtpClient.disconnect;
            smtpClient.connect;
            if not smtpClient.Authenticate then
                raise ... 
            smtpClient.Send(msg);

일단 전화하면 connnect 그리고 disconnect, SSL 라이브러리가로드되므로 두 번째 호출에 connect 당신은 갈 수 있습니다.

잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top