http://qs1969.pair.com?node_id=240171

vroom has asked for the wisdom of the Perl Monks concerning the following question:

Hi I'm currently working on sending an HTML e-mail with inline images using Mail::Sender and running into problems. I can get the images to show up fine in Outlook but when I print the messages the images show up as the "not found" x's.

The code below is mostly shamelessly cut from the Mail::Sender docs. Also different clients seem to handle the results very differently. I'm looking for any insight into this particular problem, or best practices for getting this to work in *most* clients.

Thanks,
vroom

use Mail::Sender; my $sender = new Mail::Sender {smtp => 'smtp@blah.com', from => 'emailforyou@blah.com'}; if (ref $sender->OpenMultipart({ from => 'webmaster@ci.grand-rapids.mi.us', to => $to, subject => 'mail message', boundary => 'boundary-test-1', multipart => 'related'})) { $sender->Attach( {description => 'html body', ctype => 'text/html; charset=us-ascii', encoding => '7bit', disposition => 'NONE', file => 'file.html' }); $sender->Attach({ description => 'file1.jpg', ctype => 'image/gif', encoding => 'base64', disposition => "inline; filename=\"file1.jpg\";\r\nContent-ID: <img1>" +, file => 'file1.jpg' }); $sender->Attach({ description => 'logo.gif', ctype => 'image/gif', encoding => 'base64', disposition => "inline; filename=\"logo.gif\";\r\nContent-ID: <img2>", file => 'logo.gif' }); $sender->Close() or die "Close failed! $Mail::Sender::Error\n"; } else { die "Cannot send mail: $Mail::Sender::Error\n"; }

Update:It does in fact appear to be the Outlook Issue referenced in the KB article in bbfu's post below. I ended up using Mime::Lite as jlongino suggested since the code was somewhat more succinct.