[quote=Quenten,04.04.2005, 14:51]
QuoteUnd 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.
QuoteOder 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.
QuoteQuoteEin 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.
QuoteIch will ja keinen eMail-User-Agent proggen und da eigentlich keinen riesigen Aufwand reinstecken.
Naja, eigentlich schon. Zumindest den Empfangsteil. ;)
QuoteQuoteEin 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.
QuoteHat 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.
QuoteWas 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. ;)