Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy TIdMessage multipart, wie den Msg-Body erkennen

  Alt 5. Aug 2014, 16:40
Hallo #,

Ich lade eine Mail vom Mailserver herunter.

IdPOP3.Retrieve(iMail, IdMessage); //iMail ein Zähler Es ist nur ein einfacher Text, keine Anhänge.

Trotzdem ist es eine multipart-Message (IdMessage.IsMsgSinglePartMime=False),
aber OK, das entscheidet der Sender, dass kann ich nicht beeinflussen.

Wie bekomme ich aber jetzt den Body raus.
Das Retreive legt zwei Dateien (den Msg-Header und den Body) ins Temp.
Im Moment gehe ich durch die beiden Anhänge (ist ja Multipart)
und suche gezielt nach etwas, was nur im Header stehen kann,
also Original-Message-ID (sind reply-Messages).
Die andere Datei ist ja dann der Body.

Das finde ich aber gar nicht schön.
es muss doch eine einfachere Möglichkeit geben.

Hier steht
http://stackoverflow.com/questions/1...e-email-to-vcl
Der Text ist TIdText, ist es aber nicht ...
Zumindestens bei meiner Mail.

Delphi-Quellcode:
      
      for iMessagePart := 0 to theIdMessage.MessageParts.Count-1 do
      begin
        if theIdMessage.MessageParts.Items[iMessagePart] is TIdAttachmentFile then
        begin
          IdAttachmentFile := TIdAttachmentFile(theIdMessage.MessageParts.Items[iMessagePart]);

          { Dateianhänge müssen gesondert betrachtet werden }
          if IdAttachmentFile.FileName<>'then
          begin
            s
          end
Für Indy sind bei einer multipart-Message auch Header und Body MessageParts,
die entsprechenden anderen Felder (IdMessage.Headers.Text, IdMessage.Body.Text) sind leer.


Kennt jemand eine Lösung für mich ?


Danke

Heiko
Heiko

Geändert von hoika ( 5. Aug 2014 um 16:42 Uhr)
  Mit Zitat antworten Zitat