2012-04-12 2 views
1

Ich versuche, ein wenig Perl-Skript zu programmieren, den Klartext/html E-Mails mit Anhängen senden:E-Mail mit Klartextteil, html Teil und Anhängen

 use Encode(); 
     use MIME::Entity(); 
     my $msg = MIME::Entity->build(
     From  => '"' . Encode::encode('MIME-Header', 'Any User') . '" <[email protected]>', 
     To  => '"' . Encode::encode('MIME-Header', 'Some User') . '" <[email protected]>', 
     Subject  => Encode::encode('MIME-Header', 'Multipart alternative with attachments'), 
     Type  => 'multipart/alternative', 
    ); 
     my $plain = $msg->attach(
     Type   => 'text/plain; charset=UTF-8', 
     Data   => [ "*Multipart alternative with attachments*\n\nHere comes the plain text." ], 
    ); 
     my $fancy = $msg->attach(Type => 'multipart/related'); 
     $fancy->attach(
     Type   => 'text/html; charset=UTF-8', 
     Data   => [ "<html>\n\t<body>\n\t\t<h1>Multipart alternative with attachments</h1>\n\t\t<p>Here comes the fancy text.</p>\n\t</body>\n</html>" ], 
    ); 
     $fancy->attach(
     Type   => 'text/plain; charset=UTF-8', 
     Disposition  => 'attachment', 
     Filename  => 'test.txt', 
     Data   => [ "*Multipart alternative with attachments*\n\nHere comes the attachment." ], 
    ); 

Ich erhalte den folgenden MIME-Quellcode:

 Content-Type: multipart/alternative; boundary="----------=_1334231022-8218-0" 
     Content-Transfer-Encoding: binary 
     MIME-Version: 1.0 
     X-Mailer: MIME-tools 5.502 (Entity 5.502) 
     From: "Any User" <[email protected]> 
     To: "Some User" <[email protected]> 
     Subject: Multipart alternative with attachments 

     This is a multi-part message in MIME format... 

     ------------=_1334231022-8218-0 
     Content-Type: text/plain; charset=UTF-8 
     Content-Disposition: inline 
     Content-Transfer-Encoding: binary 

     *Multipart alternative with attachments* 

     Here comes the plain text. 
     ------------=_1334231022-8218-0 
     Content-Type: multipart/related; boundary="----------=_1334231022-8218-1" 
     Content-Transfer-Encoding: binary 

     This is a multi-part message in MIME format... 

     ------------=_1334231022-8218-1 
     Content-Type: text/html; charset=UTF-8 
     Content-Disposition: inline 
     Content-Transfer-Encoding: binary 

     <html> 
       <body> 
         <h1>Multipart alternative with attachments</h1> 
         <p>Here comes the fancy text.</p> 
       </body> 
     </html> 
     ------------=_1334231022-8218-1 
     Content-Type: text/plain; charset=UTF-8; name="test.txt" 
     Content-Disposition: attachment; filename="test.txt" 
     Content-Transfer-Encoding: binary 

     *Multipart alternative with attachments* 

     Here comes the attachment. 
     ------------=_1334231022-8218-1-- 

     ------------=_1334231022-8218-0-- 

Wenn ich die E-Mail innerhalb The Bat, die einfache Version und die hTML-Version ansehen werden korrekt angezeigt. In Mozilla Thunderbird 11.0.1 wird die normale Version nicht angezeigt, sondern eine reduzierte HTML-Version.

Habe ich einen Fehler in meiner Logik oder ist Thunderbird gerade fehlgeschlagen?

Antwort

3

Sie brauchen nicht $fancy, fügen Sie alles zu $msg hinzu.

Der Content-Transfer-Encoding Header ist besser base64 oder quoted-printable. Es ist narrensicherer.

Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: base64 

Content-Type: text/html; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
+0

[RFC 1521] (http://tools.ietf.org/html/rfc1521) ist veraltet. Verwenden Sie in Zukunft die IETF-Website zum Suchen von RFC-Texten. Oben sind die zugehörigen RFCs dargestellt. – daxim

Verwandte Themen