summaryrefslogtreecommitdiff
path: root/lib/Log/Dispatch/Email/MailSend.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Log/Dispatch/Email/MailSend.pm')
-rw-r--r--lib/Log/Dispatch/Email/MailSend.pm102
1 files changed, 102 insertions, 0 deletions
diff --git a/lib/Log/Dispatch/Email/MailSend.pm b/lib/Log/Dispatch/Email/MailSend.pm
new file mode 100644
index 0000000..10a7018
--- /dev/null
+++ b/lib/Log/Dispatch/Email/MailSend.pm
@@ -0,0 +1,102 @@
+package Log::Dispatch::Email::MailSend;
+
+use strict;
+use warnings;
+
+our $VERSION = '2.45';
+
+use Log::Dispatch::Email;
+
+use base qw( Log::Dispatch::Email );
+
+use Mail::Send;
+
+sub send_email {
+ my $self = shift;
+ my %p = @_;
+
+ my $msg = Mail::Send->new;
+
+ $msg->to( join ',', @{ $self->{to} } );
+ $msg->subject( $self->{subject} );
+
+ # Does this ever work for this module?
+ $msg->set( 'From', $self->{from} ) if $self->{from};
+
+ local $?;
+ eval {
+ my $fh = $msg->open
+ or die "Cannot open handle to mail program";
+
+ $fh->print( $p{message} )
+ or die "Cannot print message to mail program handle";
+
+ $fh->close
+ or die "Cannot close handle to mail program";
+ };
+
+ warn $@ if $@;
+}
+
+1;
+
+# ABSTRACT: Subclass of Log::Dispatch::Email that uses the Mail::Send module
+
+__END__
+
+=pod
+
+=head1 NAME
+
+Log::Dispatch::Email::MailSend - Subclass of Log::Dispatch::Email that uses the Mail::Send module
+
+=head1 VERSION
+
+version 2.45
+
+=head1 SYNOPSIS
+
+ use Log::Dispatch;
+
+ my $log = Log::Dispatch->new(
+ outputs => [
+ [
+ 'Email::MailSend',
+ min_level => 'emerg',
+ to => [qw( foo@example.com bar@example.org )],
+ subject => 'Big error!'
+ ]
+ ],
+ );
+
+ $log->emerg("Something bad is happening");
+
+=head1 DESCRIPTION
+
+This is a subclass of L<Log::Dispatch::Email> that implements the send_email
+method using the L<Mail::Send> module.
+
+=head1 CHANGING HOW MAIL IS SENT
+
+Since L<Mail::Send> is a subclass of L<Mail::Mailer>, you can change
+how mail is sent from this module by simply C<use>ing L<Mail::Mailer>
+in your code before mail is sent. For example, to send mail via smtp,
+you could do:
+
+ use Mail::Mailer 'smtp', Server => 'foo.example.com';
+
+For more details, see the L<Mail::Mailer> docs.
+
+=head1 AUTHOR
+
+Dave Rolsky <autarch@urth.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2015 by Dave Rolsky.
+
+This is free software, licensed under:
+
+ The Artistic License 2.0 (GPL Compatible)
+
+=cut