1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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
|