2016-08-03 13 views
3

이 사람이 내 고장을 진단 할 수 델파이 2010 인디 10.5.5와 마이크로 소프트 오피스 365에 대한 보안 SMTP 연결을 사용할 수 없습니다?델파이 2010 인디 10.5.5 사용 smtp.office365.com에 연결

이 질문에 인디 전문가 레미 Lebeau에서 제공하는 코드 예제를 읽고 : Using INDY 10 SMTP with Office365.

나는 그 질문에서 (AuthType이 satDefault 사용 하나 다른 satSASL를) 두 개의 다른 코드 샘플을 각각 촬영 및 잘라 내기 및 붙여 넣 콘솔 응용 프로그램으로 그들을했다. 실행할 때 각각의 경우에 다음과 같은 오류가 발생합니다 :

EIdOSSLUnderlyingCryptoError: Error connecting with SSL. 
Error connecting with SSL. 
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 

을 나는 다음과 같은 오류가 (일반 텍스트 연결이 TLS를 시도하기 전에 필요한 상태 다른 답변에서 제안으로) 내가 utUseExplicitTLS에 UseTLS을 변경하는 경우 :

EIdOSSLConnectError: Error connecting with SSL. 
Error connecting with SSL. 
EOF was observed that violates the protocol 

나는 (사용되지 않는 것으로 알려져있다) 대신 SSLOptions.Method의 SSLOptions.SSLVersions 설정에 다른 답변에 약간의 참조를 알 수 있지만, 그 속성은 인디의 내 버전 TIdSSLIOHandlerSocketOpenSSL에 존재하는 표시되지 않습니다.

나는 내가 D2010 업데이트와 함께 제공되는 인디의 버전을 생각하지만 다소 있다는 오래된. 하나 있다면 새로운 버전을 업데이 트하고자하지만 어쨌든 SVN을 설치하지 않고, 그것을 배우고, Development에서 체크 아웃하고, 다시 컴파일하지 않는 것 같습니다.

마지막으로, 나는 명백한 효과없이 실행 파일 디렉토리 및 OpenSSL을 v1.0.2h 현재의 DLL이와 현재없이 DLL을 내 콘솔 응용 프로그램의 네 가지 변종을 실행하려고했습니다.

편집 : 정보의 또 다른 조각. 클라이언트에서 제공 한 SMTP 자격 증명 (이 프로젝트는 단일 전용 아웃 바운드 전자 메일 주소를 통해 전자 메일을 보냅니다)은 @office365이 아닌 [email protected]의 형식입니다. 레미 링크 된 질문에 답을 쓴 이후

+1

는 여전히 SSLv3에를 사용하십니까이 두 라인을 변경하면 원래의 질문에 그의 대답에서 코드가 작동? TLS 1.0으로 전환하십시오. – smooty86

+0

예, 코드에서 SSLv3을 사용하지만 SSLVersions 속성에 액세스하지 않고 해당 스위치를 만들려면 어떻게해야합니까? –

+0

더 자세히 살펴보면 상수'sslvTLSv1'가 Method 속성에 할당 될 수 있습니다. 이전과 마찬가지로 잘못된 버전 번호 메시지 (SSL3_GET_RECORD 참조)가 표시됩니다. –

답변

2

분명히, 마이크로 소프트 오피스 365는 SSLv3에 지원을 중단했다 (아마도 알려진 악용 방지하기 위해) 지금 TLS가 필요합니다.

idSMTP1.UseTLS := utUseImplicitTLS; 
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvSSLv3; 

에 :

idSMTP1.UseTLS := utUseExplicitTLS; 
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvTLSv1; 
+0

올바른 '포트'에 연결하고 있는지 확인하십시오. 암시 적 SSL 및 명시 적 TLS가 다른 포트에서 실행됩니다. –

+0

Explicit가 필요한 것으로 보이는 587을 사용 중입니다. –

+0

예, 이것은 명시 적 TLS 포트입니다. –