]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/StaticEmail.pm
Make Evergreen Perl modules installable via Module::Build to match OpenSRF
[working/Evergreen.git] / Open-ILS / src / perlmods / lib / OpenILS / Application / Trigger / Reactor / StaticEmail.pm
1 package OpenILS::Application::Trigger::Reactor::StaticEmail;
2 use strict; use warnings;
3 use Error qw/:try/;
4 use Data::Dumper;
5 use Email::Send;
6 use OpenSRF::Utils::SettingsClient;
7 use OpenILS::Application::Trigger::Reactor;
8 use OpenSRF::Utils::Logger qw/:logger/;
9
10 use base 'OpenILS::Application::Trigger::Reactor';
11
12 my $log = 'OpenSRF::Utils::Logger';
13
14 my $default_template = <<TT;
15 To: [%- params.recipient %]
16 From: [%- params.sender %]
17 Subject: [%- params.subject %]
18
19 [% params.body %]
20 TT
21
22 sub ABOUT {
23     return <<ABOUT;
24
25 The StagicEmail Reactor Module sends an email to the address specified by the
26 "recipient" parameter.  This is the only required parameter (in fact the
27 template is not even required), though sender, subject and body parameters are
28 also accepted and used by the default template.
29
30 The default template looks like:
31 -------
32 $default_template
33 -------
34
35 ABOUT
36 }
37
38 sub handler {
39     my $self = shift;
40     my $env = shift;
41
42     my $conf = OpenSRF::Utils::SettingsClient->new;
43     my $smtp = $conf->config_value('email_notify', 'smtp_server');
44     $$env{params}{sender} ||= $conf->config_value('email_notify', 'sender_address');
45     $$env{params}{subject} ||= 'Test subject -- StaticEmail Reactor';
46     $$env{params}{body} ||= 'Test body -- StaticEmail Reactor';
47     $$env{template} ||= $default_template;
48
49     $$env{params}{recipient} or return 0;
50
51     my $text = $self->run_TT($env);
52     return 0 if (!$text);
53
54     $logger->info("StaticEmail Reactor: sending email to ".
55         $$env{params}{recipient}." via SMTP server $smtp");
56
57     my $sender = Email::Send->new({mailer => 'SMTP'});
58     $sender->mailer_args([Host => $smtp]);
59
60
61     my $stat;
62     my $err;
63
64     try {
65         $stat = $sender->send($text);
66     } catch Error with {
67         $err = $stat = shift;
68         $logger->error("StaticEmail Reactor: Email failed with error: $err");
69     };
70
71     if( !$err and $stat and $stat->type eq 'success' ) {
72         $logger->info("StaticEmail Reactor: successfully sent email");
73         return 1;
74     } else {
75         $logger->warn("StaticEmail Reactor: unable to send email: ".Dumper($stat));
76         return 0;
77     }
78
79 }
80
81 1;
82