diff options
Diffstat (limited to 'lib/Log/Dispatch/Email/MailSender.pm')
-rw-r--r-- | lib/Log/Dispatch/Email/MailSender.pm | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/lib/Log/Dispatch/Email/MailSender.pm b/lib/Log/Dispatch/Email/MailSender.pm new file mode 100644 index 0000000..8d561c7 --- /dev/null +++ b/lib/Log/Dispatch/Email/MailSender.pm @@ -0,0 +1,130 @@ +package Log::Dispatch::Email::MailSender; + +# By: Joseph Annino +# (c) 2002 +# Licensed under the same terms as Perl +# + +use strict; +use warnings; + +our $VERSION = '2.45'; + +use Log::Dispatch::Email; + +use base qw( Log::Dispatch::Email ); + +use Mail::Sender (); + +sub new { + my $proto = shift; + my $class = ref $proto || $proto; + + my %p = @_; + + my $smtp = delete $p{smtp} || 'localhost'; + my $port = delete $p{port} || '25'; + + my $self = $class->SUPER::new(%p); + + $self->{smtp} = $smtp; + $self->{port} = $port; + + return $self; +} + +sub send_email { + my $self = shift; + my %p = @_; + + local $?; + eval { + my $sender = Mail::Sender->new( + { + from => $self->{from} || 'LogDispatch@foo.bar', + replyto => $self->{from} || 'LogDispatch@foo.bar', + to => ( join ',', @{ $self->{to} } ), + subject => $self->{subject}, + smtp => $self->{smtp}, + port => $self->{port}, + } + ); + + die "Error sending mail ($sender): $Mail::Sender::Error" + unless ref $sender; + + ref $sender->MailMsg( { msg => $p{message} } ) + or die "Error sending mail: $Mail::Sender::Error"; + }; + + warn $@ if $@; +} + +1; + +# ABSTRACT: Subclass of Log::Dispatch::Email that uses the Mail::Sender module + +__END__ + +=pod + +=head1 NAME + +Log::Dispatch::Email::MailSender - Subclass of Log::Dispatch::Email that uses the Mail::Sender module + +=head1 VERSION + +version 2.45 + +=head1 SYNOPSIS + + use Log::Dispatch; + + my $log = Log::Dispatch->new( + outputs => [ + [ + 'Email::MailSender', + 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::Sender> module. + +=head1 CONSTRUCTOR + +The constructor takes the following parameters in addition to the parameters +documented in L<Log::Dispatch::Output> and L<Log::Dispatch::Email>: + +=over 4 + +=item * smtp ($) + +The smtp server to connect to. This defaults to "localhost". + +=item * port ($) + +The port to use when connecting. This defaults to 25. + +=back + +=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 |