]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor/StaticEmail.pm
start of a generic static email test reactor
[working/Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Trigger / Reactor / StaticEmail.pm
1 package OpenILS::Application::Trigger::Reactor::StaticEmail;
2 use Email::Send;
3 use OpenSRF::Utils::SettingsClient;
4 use OpenILS::Application::Trigger::Reactor;
5 use OpenSRF::Utils::Logger qw/:level/;
6
7 use base 'OpenILS::Application::Trigger::Reactor';
8
9 my $log = 'OpenSRF::Utils::Logger';
10
11 my $default_template = <<TT;
12 To: [%- env.params.recipient -%]
13 From: [%- env.params.sender -%]
14 Subject: [%- env.params.subject -%]
15
16 [% env.params.body %]
17 TT
18
19 sub handler {
20     my $self = shift;
21     my $env = shift;
22
23     my $conf = OpenSRF::Utils::SettingsClient->new;
24     my $smtp = $conf->config_value('email_notify', 'smtp_server');
25     $$env{params}{sender} ||= $conf->config_value('email_notify', 'sender_address');
26     $$env{params}{subject} ||= 'Test subject -- StaticEmail Reactor';
27     $$env{params}{body} ||= 'Test body -- StaticEmail Reactor';
28
29     $$env{params}{recipient} or return 0;
30
31     $logger->info("StaticEmail Reactor: sending email to ".
32         $$env{params}{recipient}." via SMTP server $smtp");
33
34     my $sender = Email::Send->new({mailer => 'SMTP'});
35     $sender->mailer_args([Host => $smtp]);
36
37     my $TT = $$env{template} || $default_template;
38     my $text = ''; # XXX TemplateToolkit stuff goes here...
39
40     my $stat;
41     my $err;
42
43     try {
44         $stat = $sender->send($text);
45     } catch Error with {
46         $err = $stat = shift;
47         $logger->error("StaticEmail Reactor: Email failed with error: $err");
48     };
49
50     if( !$err and $stat and $stat->type eq 'success' ) {
51         $logger->info("StaticEmail Reactor: successfully sent email");
52         return 1;
53     } else {
54         $logger->warn("StaticEmail Reactor: unable to send email: ".Dumper($stat));
55         return 0;
56     }
57
58 }
59
60 1;
61