![]() |
TIdIMAP4 - Mail nicht vollständig bei .<CR><LF>
Moin !
Ich rufe mit TIdIMAP4 ein IMAP Postfach ab. Das klappt im Normalfall auch. Wenn aber in der Message eine Zeile vorkommt mit
Code:
dann bricht das abholen der Mail an der Stelle ab und die Mail ist unvollständig.
.<CR><LF>
Nun ist .<CR><LF> ja gleichzeitig das Ende der Daten einer SMTP Übertragung. Kann man das Verhalten von TIdIMAP4 irgendwo beeinflussen das er die ganze Mail - unabhängig vom Inhalt - liesst? Zum Lesen nutze ich übrigens das hier:
Delphi-Quellcode:
Bin im Moment echt ratlos.
nCount := TheImap.MailBox.TotalMsgs;
if nCount = 0 then begin SiMain.LogDebug('There are no messages in ' + TheImap.MailBox.Name); GetMail := False; Exit; end else begin // Email abholen .... TheImap.GetUID(ID + 1, FEMail_UID); SiMain.LogInteger('MsgSize', TheImap.RetrieveMsgSize(ID+1)); TheImap.Retrieve(ID + 1, TheMsg); GetMail := True; end; Ich habe mir sogar schon die internen Stream angesehen die in IdIMAP4.pas erzeugt werden. Selbst die sind schon unvollständig wenn die obige Zeile kommt. :gruebel: *confused i bin* :gruebel: |
Bug in IdIOHandler -> ReadLnRFC
Moin !
Ich denke hier ist der Fehler zu finden:
Delphi-Quellcode:
Das kann nicht funktionieren. Denn wenn in der Mail ein . steht in einer Zeile, dann wird das als Ende interpretiert.
function TIdIOHandler.ReadLnRFC(var VMsgEnd: Boolean; const ALineTerminator: string;
const ADelim: String = '.'; AByteEncoding: TIdTextEncoding = nil {$IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil{$ENDIF} ): string; begin Result := ReadLn(ALineTerminator, AByteEncoding {$IFDEF STRING_IS_ANSI}, ADestEncoding{$ENDIF} ); // Do not use ATerminator since always ends with . (standard) if Result = ADelim then begin VMsgEnd := True; Exit; end; if TextStartsWith(Result, '.') then begin {do not localize} Delete(Result, 1, 1); end; VMsgEnd := False; end; Mir ist auch nicht klar warum man Punkte am Anfang einer Zeile löscht. So ein Mist ... Wie soll man damit Mails sauber empfangen können :evil: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz