Windows XP에서 Indy 10을 사용하여 인라인 이미지와 함께 이메일을 보낼 때 "SMTP 수신 데이터 시간 초과"

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

문제

Windows XP에서 인라인 이미지가 포함 된 이메일을 보내려고 할 때 "SMTP Incoming Data Timeout"오류가 발생하고 있습니다. Inline 이미지가 포함 된 이메일을 보내기 위해 Indy 10의 Tiburon Branch를 사용하고 있습니다.

   MB := TIdMessageBuilderHtml.Create;
    try
      MB.PlainText.Assign(Text);
      MB.Html.Assign(FHTML);
      MB.HtmlFiles.Add('c:\Path\to\My\Image.jpg');
      MB.FillMessage(IdMessage);
    finally
      MB.Free;
    end;


  if not IdSMTP.Connected then
    IdSMTP.Connect;
  IdSMTP.Send(IdMessage);

Windows XP에서 발생합니다. Windows Vista에서는 이메일과 인라인 이미지가 잘 전송됩니다.

분명히 서버에 아무것도 보내지 않고 보내기 전에 이미지를 집중시키는 것으로 보입니다.

다음은 통화 스택입니다.

 IdReplySMTP        497   +1 TIdReplySMTP.RaiseReplyError
 IdTCPConnection    574   +1 TIdTCPConnection.RaiseExceptionForLastCmdResult
 IdTCPConnection    724  +10 TIdTCPConnection.CheckResponse
 IdTCPConnection    563   +2 TIdTCPConnection.GetResponse
 IdTCPConnection    583   +4 TIdTCPConnection.SendCmd
 IdTCPConnection    696   +4 TIdTCPConnection.SendCmd
 IdSMTP             377   +2 TIdSMTP.DisconnectNotifyPeer
 IdTCPConnection    517   +5 TIdTCPConnection.Disconnect
 IdSMTP             476   +2 TIdSMTP.Disconnect
 IdTCPConnection    828   +2 TIdTCPConnection.Disconnect
 Email              130  +11 TEmail.Destroy
 System            9806   +1 TObject.Free
 EnviarEmail        322  +38 TFormEnviarEmail.Enviar
 System           12106  +38 @HandleFinally
                             RtlUnwind
 System           11589  +83 @HandleAnyException
                             KiUserExceptionDispatcher
                             RtlAppendUnicodeToString
 IdMessageClient    873   +4 EncodeAttachment
 IdMessageClient   1213 +252 TIdMessageClient.SendBody
 IdMessageClient   1244 +283 TIdMessageClient.SendBody
 IdMessageClient   1269  +12 TIdMessageClient.SendMsg
 IdSMTPBase         251   +6 TIdSMTPBase.SendNoPipelining
 IdSMTPBase         436   +4 TIdSMTPBase.InternalSend
 IdSMTPBase         457   +1 TIdSMTPBase.Send
 IdSMTP             415   +6 TIdSMTP.Send
 IdSMTPBase         449   +6 TIdSMTPBase.Send

원인의 원인에 대한 단서와 문제를 어떻게 해결할 수 있습니까?

감사.

도움이 되었습니까?

해결책 3

문제 해결됨.

이미지를로드하고 이메일에 첨부하기 위해 HTML 파일을 구문 분석하고 있지만 Windows XP에서 경로는 다음과 같습니다.

C:\Documents And Settings\User\Desktop\....

그리고 HTML 파일 에서이 경로는이 경로였습니다

C:\Documents%20And%20Settings\User\Desktop\....

따라서 파일을 찾지 못한 파일은 내부적으로 제기되어 프로세스를 중지하고 타임 아웃까지 INDY가 제기하지 않았습니다.

Windows XP 시스템에서 실행되는 프로세스에 원격 디버거를 연결 한 후 첫 번째 시도에서 예외가 생겼습니다.

나는 인디가 예외를 "engulf"하는 것이 옳다고 생각하지 않지만 그것은 또 다른 역사입니다.

다른 팁

모질라 썬더 버드 (Mozilla Thunderbird) 나 오페라 (Opera)가 포함 된 메일 클라이언트와 같이 시스템의 창자에 통합되지 않는 간단하고 휴대용이있는 것이 바람직한 휴대용 메일 클라이언트로 동일한 메일을 보낼 수 있음을 확인 했습니까? 안티 바이러스 / 안티 스팸 / 방지 시스템이 방해하는 시스템이있을 수 있습니다. 그 중 다수는 투명하게 나가는 25 / TCP를 가로 채고 데이터에 대한 작업을 수행합니다.

인코딩이 이유가 아니라 읽기 타임 아웃 인 경우 readtimeout 속성을 사용하여 늘릴 수 있습니다.

idsmtp1.readtimeout : = 20000;

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