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