#!/usr/bin/env perl use strict; use warnings; use 5.010; use Email::MIME; use MIME::Base64; use File::Slurp; my $html = < Testmail

This is a test html mail with an inline graphic.
Logo

EOF # read the file my $filename = 'logo.png'; # take filename of a small 158x70 png my $image = read_file($filename, binmode => ':raw'); my $image_encoded = encode_base64($image); my $mail_part = Email::MIME->create( attributes => { content_type => "text/html", charset => "UTF-8", encoding => "quoted-printable", }, body_str => $html, ); my $jpeg_part = Email::MIME->create( header_str => [ 'Content-ID' => '', 'Content-Disposition' => 'inline', ], attributes => { content_type => "image/png", encoding => "base64", }, body => $image, ); my $mail = Email::MIME->create( header_str => [ 'To' => 'yourmail@yourdomain.de', 'From' => 'McA@perlmonks.org', 'Subject' => 'Testmail with inline graphic', ], attributes => { content_type => "multipart/related", }, parts => [ $mail_part, $jpeg_part, ], ); say $mail->as_string;