Thread Mail-Body dekodieren (15 answers)
Opened by Quenten at 2005-03-29 18:50

Dubu
 2005-04-05 00:37
#53046 #53046
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Quenten,04.04.2005, 14:51]
Quote
Und eine Mail muss ueberhaupt keinen "textuellen Inhalt" haben, wenn du das meinst. Ich kann auch eine MIME-Mail verschicken, die nur aus einem Binaeranteil besteht.
Du meinst indem ich einer Mail keinen Body-Text mitgebe? Klar, kann ja auch Mails ohne Daten raushauen. In dem Fall hab ich halt nen leeren Body, den ich auch verwerten würde zusammen mit den restlichen Daten.
[/quote]
Ich dachte an eine Mail, die nur aus einem Bild (z.B. Content-type: image/jpeg) besteht. Dann ist der Body nicht leer, aber es gibt keinen Text.

Quote
Oder ich fange leere Felder vorher ab. Trotz allem möchte ich sie aber auslesen aus der Mail.
Im großen ganzen geht es darum, dass ich ein Script schreiben will, welches mir die Daten einer eMail, die an bestimmte Empfänger geschickt werden, ausliest und in eine Datenbank schreibt.

Das muss, wie gesagt, kein Text sein.

Quote
Quote
Ein anderes Problem ist, dass durchaus ein einzelner Mailtext aus mehreren MIME-Parts bestehen kann! Mutt macht sowas gerne, wenn unterschiedliche Teile unterschiedliche Zeichensaetze benoetigen. Da kann es also sein, dass ein MIME-Part US-ASCII ist, der naechste dann ISO-8859-1 und der wiederum naechste ISO-8859-15. Alle hintereinander gehaengt bilden den Text der Mail. Damit kommt nichtmal jeder User Agent klar.
Bleibt die Frage wie sowas zustande kommt (Aufteilung der Mail in mehrere Entity-Parts und die unterschiedlichen Zeichensätze)? Und es bleibt die Frage wie wahrscheinlich sowas ist.

Ich halte es fuer recht unwahrscheinlich.
multipart/alternative ist dagegen sehr haeufig.

Quote
Ich will ja keinen eMail-User-Agent proggen und da eigentlich keinen riesigen Aufwand reinstecken.

Naja, eigentlich schon. Zumindest den Empfangsteil. ;)

Quote
Quote
Ein Kriterium fuer die Auswahl ist natuerlich, was Content-type und Content-Disposition sagen. Wenn die Content-Disposition "attachment" ist, oder der Content-type etwas anderes als "text/*", dann gehoert es wohl nicht zum textuellen Inhalt der Mail.
Klar, daran mache ich ja aus, ob ich es verwerten kann oder nicht.

Gut, das sind die entscheidenden Kriterien (Attachment ja/nein und der MIME-Typ). Mehr kenne ich nicht.

Quote
Hat jede Mail einen text/plain Part? Ist das immer der erste?

Nein, nein, nein. Das sagte ich doch schon oben: Ich kann auch nur ein Bild verschicken, dann gibt's keinen Text-Teil. Ausserdem hat eine Nicht-MIME-Mail gar keine Parts (sondern besteht nur aus Text), kann die Reihenfolge der Teile AFAIK beliebig sein, und muss kein bestimmter Teil vorkommen.

Quote
Was ist der Unterschied zwischen "effective_type", "content-type" und "mime_type".

"Content-type" ist der Header der gesamten Mail bzw. eines MIME-Parts, der angibt, welchen Inhaltstyp die Mail / dieser Teil hat. Der Inhaltstyp wird als "type/subtype" angegeben - und das ist der MIME-Type dieses Teils.
MIME::Entity->mime_type() liefert diesen MIME-Type zurueck, so wie er angegeben ist.
MIME::Entity->effective_type() liefert das gleiche wie mime_type(), sofern die Kodierung dieses Teils (angegeben in Content-Transfer-Encoding) bekannt ist und der Teil dekodiert werden konnte. Wenn nicht, dann bekommt man hier "application/octet-stream" zurueck, was soviel heisst wie "irgendwelche Binaerdaten".

So steht's jedenfalls in der Manpage zu MIME::Entity. ;)

View full thread Mail-Body dekodieren