![]() |
Indy TIdMessage multipart, wie den Msg-Body erkennen
Hallo #,
Ich lade eine Mail vom Mailserver herunter.
Delphi-Quellcode:
Es ist nur ein einfacher Text, keine Anhänge.
IdPOP3.Retrieve(iMail, IdMessage); //iMail ein Zähler
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 ![]() Der Text ist TIdText, ist es aber nicht ... Zumindestens bei meiner Mail.
Delphi-Quellcode:
Für Indy sind bei einer multipart-Message auch Header und Body MessageParts,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 die entsprechenden anderen Felder (IdMessage.Headers.Text, IdMessage.Body.Text) sind leer. Kennt jemand eine Lösung für mich ? Danke Heiko |
AW: Indy TIdMessage multipart, wie den Msg-Body erkennen
Hallo,
könnte ich das über den ContentType ermitteln ? ![]() Gerade die Antwort sieht doch eigentlich OK aus ?
Delphi-Quellcode:
Heiko
if IsHeaderMediaType(Part.ContentType, 'text/html') then
begin DisplayHTML(TIdText(Part).Body); Exit; end; if IsHeaderMediaType(Part.ContentType, 'text/plain') then begin DisplayPlain(TIdText(Part).Body); Exit; end; |
AW: Indy TIdMessage multipart, wie den Msg-Body erkennen
*push*
|
AW: Indy TIdMessage multipart, wie den Msg-Body erkennen
Habe in meinem POP3-Client das noch drin stehen:
Delphi-Quellcode:
Wozu weiß ich momentan zwar auch nicht mehr (Kommentare wären schön gewessen :stupid:), aber um sonst habe ich bestimmt nicht rein geschrieben.
if Pos( 'quoted-printable', MyMsg.ContentTransferEncoding ) > 0 then
begin with TIdDecoderQuotedPrintable.Create(nil) do try RetBodyText := DecodeString(RetBodyText); finally Free; end; end; Evtl. hilfts dir weiter |
AW: Indy TIdMessage multipart, wie den Msg-Body erkennen
Hallo,
danke ;) Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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