NAME

Exception::Reporter::Sender::Email - a report sender that sends detailed dumps via email

VERSION

version 0.015

SYNOPSIS

my $sender = Exception::Reporter::Sender::Email->new({
  from => 'root@example.com',
  to   => 'Beloved SysAdmins <sysadmins@example.com>',
});

OVERVIEW

This is the only report sender you'll probably ever need.

It turns the report into a multipart email message and sends it via email.

Each set of summaries is turned into a MIME message part. If a dumpable has become more than one summary, its summaries will be children of a multipart/related part. Otherwise, its summary will become a part of the kind indicated in the summary.

The ident of the first summary will be used for the subject of the message.

The GUID of the exception report (the thing returned by the reporter's report_exception method) is used as the local part of the email message's Message-ID.

Every reported message has a In-Reply-To header formed by combining a slightly-munged version of the ident and the reporter. This means that similar exception report emails will thread together in a thread-capable email reader.

send_report

$email_reporter->send_report(\@summaries, \%arg, \%internal_arg);

This method builds a multipart email message from the given summaries and sends it.

%arg is the same set of arguments given to Exception::Reporter's report_exception method. Arguments that will have an effect include:

extra_rcpts  - an arrayref of extra envelope recipients
reporter     - the name of the program reporting the exception
handled      - if true, the reported exception was handled and the user
               saw a simple error message; sets X-Exception-Handled header
               and adds a text part at the beginning of the report,
               calling out the "handled" status"

%internal_arg contains data produced by the Exception::Reporter using this object. It includes the guid of the report and the caller calling the reporter.

The mail is sent with the send_email method, which can be replaced in a subclass.

The return value of send_report is not defined.

PERL VERSION

This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.)

Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl.

METHODS

send_email

$sender->send_email($email, \%env);

This method expects an email object (such as can be handled by Email::Sender) and a a hashref that will have these two keys:

from - an envelope sender
to   - an arrayref of envelope recipients

It sends the email. It should not throw an exception on failure. The default implementation uses Email::Sender. If the email injection fails, a warning is issued.

AUTHOR

Ricardo Signes <cpan@semiotic.systems>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Ricardo Signes.

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