![]() |
INDY10, EMail multipart/alternative
Hallo,
wie komme ich an die Inhalte eines Mail multipart/alternative ran? Die Mail steckt derzeit in einem TidMessage. Danke an die Wissenden Ciao Frank |
AW: INDY10, EMail multipart/alternative
Also ich ermittle den Mailbody (Text) folgendermaßen:
Code:
Bei "multipart/alternative" wird dabei nur die HTML-Version angezeigt.
//Mailbody ermitteln:
S := ''; S3 := LowerCase(Msg.ContentType); if (S3 = 'text/plain') OR (S3 = 'text/html') then begin S := Msg.Body.Text; end else begin IsAlternative := ( S3 = 'multipart/alternative' ); for i := 0 to Msg.MessageParts.Count - 1 do begin if (Msg.MessageParts.Items[i] is TIdText) then begin if LowerCase(Msg.MessageParts.Items[i].ContentType) = 'multipart/alternative' then begin isAlternative := true; end else if LowerCase(Msg.MessageParts.Items[i].ContentType) = 'text/plain' then begin if NOT isAlternative then S := S + TIdText(Msg.MessageParts.Items[i]).Body.Text; end else if LowerCase(Msg.MessageParts.Items[i].ContentType) = 'text/html' then begin S := S + TIdText(Msg.MessageParts.Items[i]).Body.Text; end else begin S := S + TIdText(Msg.MessageParts.Items[i]).Body.Text; end; end; end; end; . |
AW: INDY10, EMail multipart/alternative
Hallo,
danke für deinen Snippet, der funktioniert auch als solcher. Nun fallen mir auch Mail vom Typ multipart/related in die Hände. Da haben die MessageParts einen ContentType multipart/alternative. Wie löst man denn die auf? Danke und ciao Frank |
AW: INDY10, EMail multipart/alternative
Zitat:
Will man es (korrekterweise) inline darstellen, muss man im Text nach (z.B.) "{image file=cid:950118.AECB@XIson.com}" suchen und an dieser Stelle die Anlage mit der entsprechenden Content-ID einfügen/anzeigen. |
AW: INDY10, EMail multipart/alternative
Hallo Olli,
so dachte ich bislang auch. Nur stoße ich derzeit vermehrt auf Mail, die den Textinhalt im related oder mixed-Teil unterbringen. Da gibt es plötzlich jede Menge Abschnitte mit multipart/alternative und darin erst die eigentliche Message
Code:
Ciao
Content-Type: multipart/alternative; boundary="----=_Part_1650115_1696814479.1355114756495";
boundary="FwDNomqXkhucLd61sob0y=_quOXxxqWTyj" --FwDNomqXkhucLd61sob0y=_quOXxxqWTyj Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Frank |
AW: INDY10, EMail multipart/alternative
Hast du meinen Code getestet? Wo genau liegt das Problem?
Da ich alle Message-Parts durchgehe und dabei alle Texte "übernehme", sollten zumindest am Ende alle Textteile vorhanden sein. Eventuell mal zum Testen bei dem
Code:
die erste Zeile weglassen, dann sind es wirklich alle Texte, auch wenn sie "doppelt" (html + plain) sind.
if NOT isAlternative then
S := S + TIdText(Msg.MessageParts.Items[i]).Body.Text; |
AW: INDY10, EMail multipart/alternative
Hi,
das Problem liegt darin, das es nur einen MessagePart gibt (Content-Type: multipart/alternative;) und darin verbergen sich die Inhalte (text/plain, text/html etc). Nach deiner Lösung sehe ich dann den Inhalt des kompletten multipart/alternatives oder multipart/mixed. Ich hoffte, dass es Methoden gibt, über die man an die eingebetteten Teile kommt. Ciao Frank |
AW: INDY10, EMail multipart/alternative
Zitat:
![]() |
AW: INDY10, EMail multipart/alternative
Zitat:
|
AW: INDY10, EMail multipart/alternative
Zitat:
Habe es selbst mit einigen solcher Nachrichten erfolgreich getestet, allerdings hatten die nur 1 Boundary-Angabe, wie oben schon erwähnt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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