Björn karpenstein - Mi 19.10.05 18:34
Titel: IdPOP3 e-Mail-Body manchmal leer
Hallo ich bin ein bischen am Verzweifeln, weil bei manchen Mails mein eMail-Body leer ist. Bitte mal unten den Quelltext angucken - im If-Teil kommen die Anlagen - im else-Teil soll der Body reingeschrieben werden. Bitte helft mir, weiss ned weiter ;'o(. Bei manchen Mails kommt auch manchmal gar nix an (z.B. der GMX-Newsletter).
Hier finde ich einen unbeantworteten Beitrag, der das selbe Problem schildert:
http://www.delphipraxis.net/topic19262.html
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| for i := 0 to Pred(IdMessage1.MessageParts.Count) do begin if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then begin Application.ProcessMessages;
AdoQuery2.SQL.Clear; AdoQuery2.SQL.Add('SELECT max(id) FROM email'); AdoQuery2.Open; maxid := AdoQuery2.Fields[0].AsInteger; AdoQuery2.Close;
if not DirectoryExists(ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)) then begin
if not ForceDirectories(ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)) then begin ShowMessage('Es scheint Sie verfügen über keine Rechte in dem Verzeichnis von EasyMail! Abbruch!'); abort; end;
TIdAttachment(IdMessage1.MessageParts.Items[i]).SaveToFile ( ExtractFilePath(Application.ExeName)+'anlagen\'+IntToStr(maxid)+'\'+ TIdAttachment(IdMessage1.MessageParts.Items[i]).Filename );
end; Application.ProcessMessages; end else begin if IdMessage1.MessageParts.Items[i] is TIdText then begin ADOQuery1.FieldByName('email').AsString := TIdText(IdMessage1.MessageParts.Items[i]).Body.Text; Application.ProcessMessages; end; end; end; |
Raffo - Do 20.10.05 20:53
Hab eigentlich noch nicht ganz so viel Ahnung von der Kompo, aber kann es sein, das diese Mails als Text kommen und Du aber nur mit Message.Parts arbeitest?
Was ist, wenn Du die Mails entweder in RAW Format holst
Delphi-Quelltext
1:
| pop3.RetrieveRaw(i,memo1.lines); |
oder ganz normal
Auf der anderen Seite hab ich schon gemerkt, wenn man "normal" die Mail abholt und es ist eine Multipart, zeigt er im Body nur "This is a multipart message" an.