The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Catalyst::View::Email - Send Email from Catalyst

SYNOPSIS

This module simply sends out email from a stash key specified in the configuration settings.

CONFIGURATION

In your app configuration (example in YAML):

    View::Email:
        stash_key: email
        content_type: text/plain 
        sender:
            method:     SMTP
            # mailer_args is passed directly into Email::Send 
            mailer_args:
                - Host:       smtp.example.com
                - username:   username
                - password:   password

SENDING EMAIL

In your controller, simply forward to the view after populating the stash_key

    sub controller : Private {
        my ( $self, $c ) = @_;
        $c->stash->{email} = {
            to      => q{catalyst@rocksyoursocks.com},
            from    => q{no-reply@socksthatarerocked.com},
            subject => qq{Your Subject Here},
            body    => qq{Body Body Body}
        };
        $c->forward('View::Email');
    }

Alternatively, you can use a more raw interface, and specify the headers as an array reference.

    $c->stash->{email} = {
        header => [
            To      => 'foo@bar.com',
            Subject => 'Note the capitalization differences'
        ],
        body => qq{Ain't got no body, and nobody cares.},
        # Or, send parts
        parts => [
            Email::MIME->create(
                attributes => {
                    content_type => 'text/plain',
                    disposition  => 'attachment',
                    charset      => 'US-ASCII',
                },
                body => qq{Got a body, but didn't get ahead.}
            )
        ],
    };

HANDLING FAILURES

If the email fails to send, the view will die (throw an exception). After your forward to the view, it is a good idea to check for errors:

    $c->forward('View::Email');
    if ( scalar( @{ $c->error } ) ) {
        $c->error(0); # Reset the error condition if you need to
        $c->res->body('Oh noes!');
    } else {
        $c->res->body('Email sent A-OK! (At least as far as we can tell)');
    }

OTHER MAILERS

Now, it's no fun to just send out email using plain strings. We also have Catalyst::View::Email::Template for use. You can also toggle this as being used by setting up your configuration to look like this:

    View::Email:
        default_view: TT

Then, Catalyst::View::Email will forward to your View::TT by default.

SEE ALSO

Catalyst::View::Email::Template - Send fancy template emails with Cat

Catalyst::Manual - The Catalyst Manual

Catalyst::Manual::Cookbook - The Catalyst Cookbook

AUTHORS

J. Shirley <jshirley@gmail.com>

CONTRIBUTORS

(Thanks!)

Daniel Westermann-Clark

LICENSE

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