Hi,
ich sitze grad an einem Problem in Bezug auf text/plain von MIME-Mails auszulesen, also den eigentlichen Mailtext. Irgendwie komme ich hier nicht recht weiter! :(
Es ist doch so, dass der Aufbau vom MIME-Item 'body' normalerweise so aussieht (lt. Recherche):
+ multipart/related
+ multipart/alternative
+ text/plain
+ text/html
+ image/gif
+ image/jpeg
Das ist aber nicht immer so, oder? Ich habe hier ne Mail, deren MIME-Item 'body' so aussieht:
+ multipart/related
+ multipart/alternative
+ multipart/related
+ text/plain
+ text/html
+ image/gif
+ image/jpeg
Jetzt frag ich mich, wie ich allgemeingültig den text/plain auslesen kann, wenn dieser nun doch offensichtlich in verschiedenen Ebenen vorkommen kann?! Oder ist diese Mail nur ein "Ausreiser" - warum auch immer?
Bisher lese ich text/plain so aus:
Set mime = doc.GetMIMEEntity
If Not(mime Is Nothing) Then
If mime.ContentType = "multipart" Then
Set child = mime.GetFirstChildEntity
' Child´s durchgehen
While Not(child Is Nothing)
If child.ContentType = "multipart" Then
Messagebox "Hier text/plain auslesen:"
Set ch = child.GetFirstChildEntity
If ch.ContentType = "text" And ch.ContentSubType = "plain" Then
Messagebox "ContentAsText vom Mail-body : " & ch.ContentAsText
End If
Set ch = ch.GetNextSibling
End If
Set child = child.GetNextSibling
Wend
End If
End If
Wenn jemand sowas schonmal gemacht hat, oder weiß wie´s geht... wie liest man denn bitteschön den text/plain einer Mail korrekt aus?
Mein Code sollte doch so erstmal richtig sein?
Danke und Gruß
Rico.
Haaaa... ;D
Ich bin durch Zufall auf einen 3-Zeiler in der Hilfe gestoßen, der all meine Sorgen löst, denn nun wird korrekt der Mailtext ausgelesen - egal wo text/plain in der MIME-Struktur steht!!!
Set mime = doc.GetMIMEEntity
If Not(mime Is Nothing) Then
' multipart:
If mime.ContentType = "multipart" Then
Set child = mime.GetFirstChildEntity
' -----aus DominoHilfe:-----
While Not(child Is Nothing)
Set mime = child
Set child = mime.GetFirstChildEntity
Wend
' ---------------------------
If mime.ContentType = "text" And mime.ContentSubType = "plain" Then
body = mime.ContentAsText
Messagebox "MIME-Body : " & body
End If
End If
End If
Geil, die Ausgabe ist nun korrekt! Fast... ;)
Ich muss nun nur noch die Formatierung des 'mime.ContentAsText' anpassen.
Sprich: Bspw. wird ein 'ü' als '=FC', ein 'ß' als '=DF' usw. zurückgeliefert!
Mh, nach welchen Stichwörtern muss ich schauen, um die Formatierung korrekt anzupassen???
Rico.
Sorry, ich hab mich vertan. Das ist nicht Base64 sondern "quoted printable".
Was es in jeder Mail ist, musst Du den Headern jeweils entnehmen.
Content-Transfer-Encoding: quoted-printable
oder
Content-Transfer-Encoding: base64
oder
...
Mh... ich habe jetzt mal folgendes probiert:
If mime.ContentType = "text" And mime.ContentSubType = "plain" Then
Call mime.DecodeContent()
body = mime.ContentAsText
Messagebox "MIME-Body : " & body
End If
Jetzt sind die diversen Zeichen (ö, ä, ß usw.) richtig dargestellt.
Hierbei habe ich keinerlei Unterscheidung/Abfrage gemacht, was in der Mail bei 'Content-Transfer-Encoding: ' steht.
Soll´s das denn wirklich schon gewesen sein? Scheint mir zu simpel, aber lt. DesignerHilfe wars das schon.
EDIT: So, alles scheint jetzt nach ausführlichen Tests mit zig verschiedenen Mails in diversen Formatierungen erstmal so zu klappen, wie ich´s mir vorgestellt habe.
Danke für die Hilfe/Tips/Anregungen!
Rico.