NAME

Catalyst::View::Email::Template - Send Templated Email from Catalyst

SYNOPSIS

Sends Templated mail, based upon your default view. It captures the output of the rendering path, slurps in based on mime-types and assembles a multi-part email using Email::MIME::Creator and sends it out.

CONFIGURATION

Use the helper to create your View:

$ script/myapp_create.pl view Email::Template Email::Template

In your app configuration (example in YAML):

View::Email::Template:
    # Optional prefix to look somewhere under the existing configured
    # template  paths.
    # Default: none
    template_prefix: email
    # Where to look in the stash for the email information.
    # Default: email
    stash_key: email
    # Define the defaults for the mail
    default:
        # Defines the default content type (mime type).
        # Mandatory
        content_type: text/html
        # Defines the default charset for every MIME part with the content
        # type text.
        # According to RFC2049 a MIME part without a charset should
        # be treated as US-ASCII by the mail client.
        # If the charset is not set it won't be set for all MIME parts
        # without an overridden one.
        # Default: none
        charset: utf-8
        # Defines the default view used to render the templates.
        # If none is specified neither here nor in the stash
        # Catalysts default view is used.
        # Warning: if you don't tell Catalyst explicit which of your views should
        # be its default one, C::V::Email::Template may choose the wrong one!
        view: TT
    # Setup how to send the email
    # All those options are passed directly to Email::Send,
    # for all available options look at its docs.
    sender:
        mailer: SMTP
        mailer_args:
            Host:       smtp.example.com # defaults to localhost
            username:   username
            password:   password

SENDING EMAIL

Sending email is just setting up your defaults, the stash key and forwarding to the view.

$c->stash->{email} = {
    to      => 'jshirley@gmail.com',
    from    => 'no-reply@foobar.com',
    subject => 'I am a Catalyst generated email',
    template => 'test.tt',
};
$c->forward('View::Email::Template');

Alternatively if you want more control over your templates you can use the following idiom to override the defaults:

templates => [
    {
        template        => 'email/test.html.tt',
        content_type    => 'text/html',
        charset         => 'utf-8',
        view            => 'TT', 
    },
    {
        template        => 'email/test.plain.mason',
        content_type    => 'text/plain',
        charset         => 'utf-8',
        view            => 'Mason', 
    }
]

If it fails $c->error will have the error message.

TODO

ATTACHMENTS

There needs to be a method to support attachments. What I am thinking is something along these lines:

attachments => [
    # Set the body to a file handle object, specify content_type and
    # the file name. (name is what it is sent at, not the file)
    { body => $fh, name => "foo.pdf", content_type => "application/pdf" },
    # Or, specify a filename that is added, and hey, encoding!
    { filename => "foo.gif", name => "foo.gif", content_type => "application/pdf", encoding => "quoted-printable" },
    # Or, just a path to a file, and do some guesswork for the content type
    "/path/to/somefile.pdf",
]

SEE ALSO

Catalyst::View::Email - Send plain boring emails with Catalyst

Catalyst::Manual - The Catalyst Manual

Catalyst::Manual::Cookbook - The Catalyst Cookbook

AUTHORS

J. Shirley <jshirley@gmail.com>

Simon Elliott <cpan@browsing.co.uk>

Alexander Hartmaier <alex_hartmaier@hotmail.com>

LICENSE

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.