NAME

Dancer::Plugin::EmailSender - Easily use Email::Sender from Dancer

VERSION

version 0.002

SYNOPSIS

use Dancer;
use Dancer::Plugin::EmailSender;

post '/signup' => sub {
    sendemail {
        body            => '...',
        'envelope-from' => 'signup-@ironicdesign.com-@[]' # Allows VERP-handling with postfix
        from            => 'mdorman@ironicdesign.com',
        subject         => 'Welcome to our site',
        to              => param ('email')
    };
};

DESCRIPTION

This plugin makes constructing and sending emails from Dancer applications as simple and flexible as possible. Since it uses Email::Sender, in many cases, no explicit configuration may be required, though several configuration options are available.

CONFIGURATION

You can configure a number of defaults for the plugin in the your config.yml or appropriate environment config file. Anything that you configure in this way can be overridden at the time sendemail is called.

Transport

Dancer::Plugin::EmailSender allows you to choose and configure a particular transport, should you not wish to use the one that Email::Sender would choose by default (as discussed in the Email::Sender manual).

Simply add a transport key, pointing to a set of options that must include a class entry (stating the name of the subclass of Email::Sender::Transport:* to be used for the transport), while any additional entries will be used as parameters for instantiating the transport:

For example, to send mail using SMTPS via Gmail:

plugins:
  EmailSender:
    transport:
      class: SMTP:
      ssl: 1
      host: 'smtp.gmail.com'
      port: 465
      sasl_username: 'mdorman@ironicdesign.com'
      sasl_password: 'NotMuchOfASecret'

Or perhaps to use the default Sendmail transport, but give an explicit path to the sendmail program:

plugins:
  EmailSender:
    transport:
      class: Sendmail
      sendmail: '/usr/sbin/sendmail'

Headers

You may also provide a set of default headers in the configuration:

plugins:
  EmailSender:
    headers:
      From: 'noreply@ironicdesign.com'
      X-Mailer: 'Degronkulator 3.14'
      X-Accept-Language: 'en'

sendemail

This function will optionally construct, and then send, an email. It takes a hashref of parameters. They can be divided up as to their purpose:

Specifying the content to send

To specify the content of the email to send, you may either:

Provide a complete email to be sent

If a completed email (in a format that is acceptable to Email::Abstract is provided in an email parameter, that is the email that will be sent.

Provide parameters to construct an email

These parameters include:

from

The address from which the email should be sent.

to

An arrayref od address to which the email should be sent.

headers

A hashref of additional headers to add to the email.

body

The body of the actual email to be sent.

Specifying how the email is sent

You may optionally specify the transport here, overriding any defaults or settings in your application configuration. All configuration will appear under a transport key.

From there you can specify the transport to use two different ways.

Provide a set of construction parameters

The parameters you hand in will be used just as if they had appeared in the configuration to create a new transport, which will then be used for this transaction.

Provide a constructed Transport

You may construct your own transport and simply hand that in to the sendemail routine.

Specifying the sending and retrieving addresses

You may independently set the sending and receiving addresses for the SMTP transaction, allowing them to be different from the values in the headers of your email. To do this you can include either or both of:

envelope-from

This is the address that will be used as the sending address during the SMTP transaction.

envelope-to

This is the list of addresse that will be used as recipients during the SMTP transaction.

Error Handling

An exception will be thrown if sending the email fails, so plan appropriately.

AUTHOR

Michael Alan Dorman <mdorman@ironicdesign.com>

Although I started out just wanting to fix things in Dancer::Plugin::Email, I ended up rewriting everything. Still, Naveed Massjouni <naveedm9@gmail.com> and Al Newkirk <awncorp@cpan.org> deserve credit for writing Dancer::Plugin::Email.

AUTHOR

Michael Alan Dorman <mdorman@ironicdesign.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Michael Alan Dorman.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.