PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text einer MIME-Mail vorhanden - wie versenden



tschloss
31.03.08, 07:33
Hi,

ich habe hier den Quelltext einer e-Mail mit verschiedenen MIME-Parts, auch nested. Alles ist schön codiert (Texte in Qutoed Printable, Bilder in Base64 etc.).

Ich suche einen grundsätzlichen Weg, wie ich diesen Mailtext versenden kann.
Ein erster Versuch per "cat mailtext | mail mail@domain.de" führte einfach dazu, dass der Mailtext als Textbody ankam. Die MIME-Elemente wurden nicht beachtet. Diese Schnittstelle scheint also zu high-levelig zu sein.

FRAGE: Was wäre eine geeignete Schnittstelle/Methode?
Am liebsten wäre mir eine geeignete Perl-Funktion, da das umgebende Programm auch Perl ist.

Auf meinem Server läuft ein Postfix (also sendmail-Schnittstele auch vorhanden), ich kann aber auch direkt auf den externen SMTP gehen.

Die Folgefrage wäre dann, was ich beachten muss:
- alle Zeichen sind im 7bit Bereich
- Zeilenlänge ist begrenzt
- müssen die Zeilen mt CR-LF abgeschlossen sein oder wie
- welche der Headerinfos gehören in den Mailtext dann noch rein (z.B. "To:")

Danke für Tipps.
Thomas

PS: Ich habe in Mrunix eine ähnliche Anfrage zum gleichen Thema gestellt. Da ging es auch mehr um das Perl Thema, aber mit dieser Anfrage möchte ich mich erst mal vom Programmierthema auf die grundsätzliche Schnittstellenfrgae lösen.

marce
31.03.08, 07:38
Kannst Du den Quelltext (reicht ja auch verkürzt) posten?

tschloss
31.03.08, 07:52
.... HEADER HEADER ......
Content-Type: multipart/alternative; boundary=Apple-Mail-13-843399756
Mime-Version: 1.0 (Apple Message framework v919.2)


--Apple-Mail-13-843399756
Content-Type: text/plain;
charset=ISO-8859-1;
format=flowed;
delsp=yes
Content-Transfer-Encoding: quoted-printable



Herzlichen Gl=FCckwunsch!
=09
Liebes Mitglied,
sehr geehrter Herr Dr. Name!

Der Vorstand gratuliert Ihnen herzlich zu Ihrem heutigen Geburtstag! =20
Wir alle verbinden damit unsere besten W=FCnsche f=FCr das kommende =20
Lebensjahr. M=F6ge die Zukunft durch Gl=FCck, Zufriedenheit, Gesundheit =20=

und vor allem durch viele sch=F6ne Runden auf unserer Club-Anlage =20
gekennzeichnet sein.

Ihr Vorstand,
Golfclub Mannheim-Viernheim 1930 e.V.


--Apple-Mail-13-843399756
Content-Type: multipart/related;
boundary=Apple-Mail-14-843399758;
type="text/html"


--Apple-Mail-14-843399758
Content-Type: text/html;
charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<html><head>
<title>Party</title>
</head><body style=3D"background-repeat: initial; background-attachment: =
initial; -webkit-background-clip: initial; -webkit-background-origin: =
initial; background-color: initial; margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: =
0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; =
background-image: =
url(cid:11B8B410-1408-4936-B756-7642251AA484/bg_pattern.jpg); =
background-position: 50% 0px; ">
<div style=3D"background-repeat: initial; background-attachment: =
initial; -webkit-background-clip: initial; -webkit-background-origin: =
initial; background-color: initial; background-image: =
url(cid:11B8B410-1408-4936-B756-7642251AA484/bg_pattern.jpg); =
background-position: 50% 0px; ">
<table class=3D"email-body-wrap" width=3D"656" cellspacing=3D"0" =
cellpadding=3D"0" id=3D"email-body" align=3D"center">
<tbody><tr>
<td width=3D"656" colspan=3D"3" class=3D"top"><img=
width=3D"656" height=3D"294" style=3D"display:block" =
src=3D"cid:11B8B410-1408-4936-B756-7642251AA484/2/Photos"></td>
</tr>
<tr>
<td =
background=3D"cid:11B8B410-1408-4936-B756-7642251AA484/bg_letter.jpg" =
class=3D"top-bg"><table width=3D"656" border=3D"0" cellpadding=3D"0" =
cellspacing=3D"0">
<tbody><tr>
<td colspan=3D"3" =
align=3D"center" id=3D"title"><div class=3D"body-title" id=3D"body-title" =
style=3D"padding-bottom:25px; padding-top: 25px;"> <font face=3D"Georgia" =
color=3D"#d04916" style=3D"font-size:35px"> <span =
apple-content-name=3D"title" style=3D"display:block;width:600px" =
apple-content-edited=3D"true" applecontenteditable=3D"true">Herzlichen =
Gl=FCckwunsch!</span> </font> </div></td>
</tr>
<tr>
<td =
width=3D"100">&nbsp;</td>
<td><font face=3D"Georgia,=
Times, serif" color=3D"#454545" style=3D"font-size:16px; =
text-align:center;">
<div =
class=3D"body-content" id=3D"body-content" style=3D"line-height:1.5;"> =
<span apple-content-name=3D"body" style=3D"display:block;width:456px" =
apple-content-edited=3D"true" applecontenteditable=3D"true">Liebes =
Mitglied,<div>sehr geehrter Herr Dr. Name!</div><div><br></div><div>Der =
Vorstand gratuliert Ihnen herzlich zu Ihrem heutigen Geburtstag! Wir =
alle verbinden damit unsere besten W=FCnsche f=FCr das kommende =
Lebensjahr. M=F6ge die Zukunft durch Gl=FCck, Zufriedenheit, Gesundheit =
und vor allem durch viele sch=F6ne Runden auf unserer Club-Anlage =
gekennzeichnet sein.<br><div><br></div>Ihr Vorstand,<br><font =
class=3D"Apple-style-span" color=3D"#453426">Golfclub Mannheim-Viernheim =
1930 e.V.</font>
=
</div></span></div>
</font></td>
<td =
width=3D"100">&nbsp;</td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td class=3D"bottom-bg"><div align=3D"center"><img=
width=3D"656" height=3D"184" alt=3D"" style=3D"display:block;" =
src=3D"cid:11B8B410-1408-4936-B756-7642251AA484/bottom.jpg"></div></td>
</tr>
</tbody></table>
</div>


</body></html>=

--Apple-Mail-14-843399758
Content-Disposition: inline;
filename=Photos.png
Content-Transfer-Encoding: base64
Content-Type: image/png;
x-apple-mail-type=stationery;
name="Photos.png"
Content-Id: <11B8B410-1408-4936-B756-7642251AA484/2/Photos>

....................

--Apple-Mail-14-843399758
Content-Disposition: inline;
filename=bottom.jpg
Content-Transfer-Encoding: base64
Content-Type: image/jpeg;
x-unix-mode=0664;
x-apple-mail-type=stationery;
name="bottom.jpg"
Content-Id: <11B8B410-1408-4936-B756-7642251AA484/bottom.jpg>

.....................

--Apple-Mail-14-843399758
Content-Disposition: inline;
filename=bg_pattern.jpg
Content-Transfer-Encoding: base64
Content-Type: image/jpeg;
x-unix-mode=0664;
x-apple-mail-type=stationery;
name="bg_pattern.jpg"
Content-Id: <11B8B410-1408-4936-B756-7642251AA484/bg_pattern.jpg>

...........................

--Apple-Mail-14-843399758
Content-Disposition: inline;
filename=bg_letter.jpg
Content-Transfer-Encoding: base64
Content-Type: image/jpeg;
x-unix-mode=0664;
x-apple-mail-type=stationery;
name="bg_letter.jpg"
Content-Id: <11B8B410-1408-4936-B756-7642251AA484/bg_letter.jpg>

............................

--Apple-Mail-14-843399758--

--Apple-Mail-13-843399756--


Kurz:
multipart/alternative
- text/plain
- multipart/related
-- text/html
-- image/png
-- image/jpeg
-- image/jpeg
-- image/jpeg

Das ist eine Glückwunsch-Karte aus Mail.app.
Vorteile:
- alternativer Plain-Text
- die 4 Bilder werden nicht als Anhänge angeboten und vor allem nicht nochmals unter der HTML-Mail einzeln dargestellt

Ich habe bereits viele Stunden verballert, diese Mail in Perl via MIME::Lite nachzubauen, aber es bleiben immer Restunzulänglichkeiten (ich teste mit Mai.app, GMail und Blackberry; Outlook Test steht noch aus).
- Anhänge werden teilweise nicht versteckt
- Gmail meint immer, einen "zitierten Text" zu haben und den "einklappen" zu müssen (aktuell der gesamte HTML-Part)
- Zeichensatzprobleme (die ich aber inzwischen im Griff zu haben glaube, zB. indem ich im HTML-Text die Ampersand?uml; Umschreibungen nehme).
Und das obwohl meine selbst erzeugten Mails vom Quelltext dem funktionierenden Original schon sehr nahe kommen.

Danke
Thomas

craano
31.03.08, 08:12
Hallo,

hilft es Dir, wenn Du die Email erst mit Email::MIME parst und dann mit MIME::Lite eine neue Email baust?

Grüße.
craano.

tschloss
31.03.08, 08:42
Hallo,

hilft es Dir, wenn Du die Email erst mit Email::MIME parst und dann mit MIME::Lite eine neue Email baust?

Grüße.
craano.

Wäre auch noch eine Idee. Allerdings glaube ich nicht, dass dabei neue Erkenntnisse herauskommen. Mein "manuelles Parsing" und manuelle Konstruktion ist ja auch schon fast in Ordnung, sowohl vom Quelltext her (also in der MIME-Struktur finde ich keine Untschiede mehr beim direkten Vergleich) also auch von de Anzeige (in Mail.app sieht es perfekt aus, der alternative Text ist ok, lediglich die 4 Bilder werden als Anhang noch zum Dowload angeboten).

Module wie MIME::Lite machen beim Zusammenbauen doch eine ganze Menge selbst (was idR auch sinnvoll ist). Das bedeutet aber, dass ich nicht 100% granular auf den erzeugten Mailtext einwirken kann (wer will das normalerweise auch schon). Deswegen mein Strategieschwenk zur vollständigen Selbsterzeugung jeder Zeile meines Mailtextes.

Trotzdem wühle mich parallel gerade durch die RFCs, um zu verstehen:
a) was könnte einen Mailclient dazu veranlassen, eine "inline" Image in einem multipart/related Block als Anhang anzuzeigen und was hält ihn davon ab. Witzigerweise weist GMail genau einen der 4 Bildanhänge als separaten Anhang aus, obwohl alle 4 genau gleich beschrieben sind.
b) was löst in einem Mailclient (hier GMail) die Erkennung eines "zitierten Textes" aus (der dann eingeklappt = erst nach Klick dargestellt wird). Vielleicht irgendwo im HTML ein ">" zuviel?

"MIME und wie gehen Mailclients damit um" - Jugend forscht!!!
Thomas

tschloss
31.03.08, 10:35
Das Ding macht mich wahnsinnig. Diese Greeting, auch wenn sie original erzeugt wird und nicht über meine Basteleien hat auf einem OL2007 folgendes Verhalten:

Bei der Anzeige fehlt das Hintergrundpattern aus dem Brief-Mittelteil "bg_letter.jpg". Läßt man OL die Mail aber in IE anzeigen (ist eine eingebaute Aktion), stimmt es wieder - die Kodierung kann also nicht völlig falsch sein.

Eigenartigerweise wird ausgerechnet dieses Bild (von 4 gleichartig eingebauten) als einziges als separater Anhang angeboten.

Siehe Anhang. Der Text in der Mitte müßte mit der weissen Papierstruktur hinterlegt sein.

Wahnsinn!
Thomas

Aqualung
31.03.08, 15:29
Hast Du es schon mal nach Art von:


cat <file> | uuencode <file> | mail -r bla@blubb.de -s "Betreff"

probiert? Vielleicht hilft auch:


man mimencode bzw. mmencode

Gruß Aqualung

tschloss
31.03.08, 15:32
Hast Du es schon mal nach Art von:


cat <file> | uuencode <file> | mail -r bla@blubb.de -s "Betreff"

probiert? Vielleicht hilft auch:


man mimencode bzw. mmencode

Gruß Aqualung

Ja, das brachte dann den Quelltext der Mail in den Body, schön lesbar aber nix mit MIME-Parts.

Thomas