Ich hab mein Delphi 6 mit den
Indy 10 Komponenten aufgepeppt, und bereue es schon bitter. Kann leider aus diversen Gründen nicht mehr zurück.
Also von Kompatibilität zu
Indy 6 kann da ja nicht die Rede sein, aus Eigenschaften UserId wird Username usw... aber das war noch das geringste Problem.
Ich muss Mails abrufen von einem
POP3 Account. Diese Mails muss ich aber anhand des Headers erst identifizieren. Ich hatte früher im Header stehen:
Code:
X-Mailer: {3B6F1A33-6F58-46C6-BA52-F7908CC0B3DF}
Indy 10 geht jetzt plötzlich hin, und liefert mir bei
N := POP3.CheckMessages ;
den Wert 0. Mit
Indy 6 gings. Hab ich im X-Mailer was einfaches stehen wie TEST, so findet TIdPOP auch die Message.
Aaargh. Was soll das. Irgendwie wollt ich dies
GUID im Header aber schon stehen lassen.
Das viel wichtigere Problem ist aber folgendes. Über folgende Prozedur lade ich die ganze Mail unter
Indy 6 problemlos herunter:
Delphi-Quellcode:
procedure TImportWebRegistration.GetMail (Nr : string) ;
var
intIndex : integer ;
s : string ;
LI : TListItem ;
i : integer ;
begin
i := StrToInt (Nr) ;
if i <> -1 then begin
IndyPOP3.Retrieve(i,FIndyMessage) ;
for intIndex := 0 to pred(FIndyMessage.MessageParts.Count) do
begin
if FIndyMessage.MessageParts.Items[intIndex] is TIdText then
begin
s := TIdText(FIndyMessage.MessageParts.Items[intIndex]).Body.text ;
CutoffUnImportantParts (s) ;
FSB.BaseString := s ;
FSB.BreakString := #13#10 ;
FSB.BreakApart ;
FContent.Assign (FSB.StringList) ;
if assigned (OnImported) then OnImported (Counter{StrToInt(Nr)},Content) ;
end
end;
if DeleteAfterImport then begin
IndyPOP3.Delete(i) ;
GetMessageIDs ;
end ;
end ;
end ;
Unter
Indy 10 wird die for intIndex Schleife NIE durchlaufen. Warum nicht? Es ist eine ganz normale Mail die über den PHP Befehl SendMail verschickt wurde.
Also so langsam bereue ich den Umstieg auf
Indy 10. Aber das löst mein Problem nun auch nicht.