So geht's:
use 5.010;
use utf8;
use strictures;
use Courriel::Builder qw(build_email subject from to plain_body html_body attach);
my $email = build_email(
subject('Überraschung'),
from('sascha <sascha@invalid>'),
to('Empfänger 1 <empfaenger1@invalid>', 'empfaenger2@invalid'),
plain_body(
content => 'Glückwunsch zur Kettensäge',
encoding => '8bit',
),
html_body(
content => '<p><img src="cid:chainsaw.png"> Glückwunsch zur Kettensäge</p>',
encoding => '8bit',
attach(
file => '/usr/share/pixmaps/chainsaw.png',
content_id => 'chainsaw.png',
),
attach(
file => '/usr/share/pixmaps/terminal.png',
content_id => 'terminal.png',
),
),
);
say $email->as_string;
Die serialisierte Nachricht sieht in der Struktur so aus:
Subject: =?UTF-8?B?w5xiZXJyYXNjaHVuZw==?=
From: sascha sascha@invalid
To: =?UTF-8?B?RW1wZsOkbmdlcg==?= 1 empfaenger1@invalid,
empfaenger2@invalid
Date: Mon, 26 Sep 2011 13:18:05 -0000
Message-Id: 1317043085.adE5ecB2.14895@notruescotsman
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=1317043085.1812871.14895
--1317043085.1812871.14895
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
Glückwunsch zur Kettensäge
--1317043085.1812871.14895
Content-Type: multipart/related; boundary=1317043085.70Ff70.14895
--1317043085.70Ff70.14895
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset=UTF-8
<p><img src="cid:chainsaw.png"> Glückwunsch zur Kettensäge</p>
--1317043085.70Ff70.14895
Content-ID: <terminal.png>
Content-Disposition: attachment; filename=terminal.png
Content-Transfer-Encoding: base64
Content-Type: image/png; charset=binary
iVBORw0KGgo…
--1317043085.70Ff70.14895
Content-ID: <chainsaw.png>
Content-Disposition: attachment; filename=chainsaw.png
Content-Transfer-Encoding: base64
Content-Type: image/png; charset=binary
iVBORw0KGgo…
--1317043085.70Ff70.14895--
--1317043085.1812871.14895--
Du kannst sie mit Email::Sender verschicken.
Siehe http://htmlemailboilerplate.com/ für eine brauchbare Vorlage für den HTML-Teil.