[Catalyst] Sending email from a Catalyst app

Octavian Rasnita orasnita at gmail.com
Wed Jul 2 12:59:56 BST 2008

From: "ivorw" <m9tn-oh4c at xemaps.com>
>I know there's more than one way to do this. I'm looking at what the
> best practice is.
> I've had some success inthe past with Catalyst::Plugin::Email, but I'm
> now looking at Catalyst::View::Email[::Template] which seems altogether
> much cleaner, able to be controlled from the config.

A more cleaner and better solution is to use Mail::Sender::Easy.

You can create UTF-8 encoded messages, include attachments, inline images, create messages with a text and an html part, and if you use MIME::Words you can also use special chars in To, From and Subject fields or other headers.

You can do:

use Mail::Sender::Easy qw(email);
use MIME::Words qw(:all);

fromaddr => 'me at site.com',
from => 'My Name <me at site.com>',
toaddr => 'you at site.eu',
to => encode_mimewords('Your Name with special chars <you at site.eu>', Charset => "UTF-8"),
subject => 'The subject',
smtp => '',

#auth => 'LOGIN',
#authid => "user",
#authpwd => "password",
#skip_bad_recipients => 1,

_text => 'The text body',
_html => 'The <b>html</b> body',
_text_info => {charset => "UTF-8"},
_html_info => {charset => "UTF-8"},

#priority => 2, # 1-5 high to low
#confirm => 'delivery, reading',

_attachments => {
  'smiley.gif' => {
    _disptype => 'GIF Image',
    _inline => 'smile1',
    description => 'Smiley',
    ctype => 'image/gif',    
    file => '/home/foo/images/smiley.gif',
  'mydata.pdf' => {
    description => 'Data Sheet',  
    ctype => 'application/pdf',
    msg => 'message',
}) or die $@;

It would be also nice a Catalyst::Plugin::Mail or Catalyst::View::Mail that uses Mail::Sender::Easy and MIME::Words, but using those modules directly is very easy and doesn't require writing much code anyway.

And of course, Mail::Sender::Easy offers much many options than those shown.


More information about the Catalyst mailing list