1*b1cdbd2cSJim Jagielski#************************************************************** 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski#************************************************************** 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielskipackage installer::mail; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielskiuse Net::SMTP; 27*b1cdbd2cSJim Jagielskiuse installer::converter; 28*b1cdbd2cSJim Jagielskiuse installer::exiter; 29*b1cdbd2cSJim Jagielskiuse installer::ziplist; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski######################################### 32*b1cdbd2cSJim Jagielski# Sending a mail 33*b1cdbd2cSJim Jagielski######################################### 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielskisub send_mail 36*b1cdbd2cSJim Jagielski{ 37*b1cdbd2cSJim Jagielski my ($message, $listenerstring, $mailinfostring, $languagesref, $destdir) = @_; 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski my $listener = installer::converter::convert_stringlist_into_array($listenerstring, ","); 40*b1cdbd2cSJim Jagielski my $mailinfo = installer::converter::convert_stringlist_into_array($mailinfostring, ","); 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski my @listener = (); 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#{$listener}; $i++ ) { push(@listener, ${$listener}[$i]); } 45*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#{$mailinfo}; $i++ ) { ${$mailinfo}[$i] =~ s/\s*$//g; } 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski my $smtphost = ${$mailinfo}[0]; 48*b1cdbd2cSJim Jagielski my $account = ${$mailinfo}[1]; 49*b1cdbd2cSJim Jagielski my $sender = ${$mailinfo}[2]; 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski if ( ! $smtphost ) { installer::exiter::exit_program("ERROR: Could not read SMTP Host in list file!", "send_mail"); } 52*b1cdbd2cSJim Jagielski if ( ! $account ) { installer::exiter::exit_program("ERROR: Could not read Account in list file!", "send_mail"); } 53*b1cdbd2cSJim Jagielski if ( ! $sender ) { installer::exiter::exit_program("ERROR: Could not read Sender in list file!", "send_mail"); } 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski my $subject = ""; 56*b1cdbd2cSJim Jagielski my $basestring = $installer::globals::product . " " . $installer::globals::compiler . $installer::globals::productextension . " " . $installer::globals::build. " " . $installer::globals::buildid . " " . $$languagesref . "\n"; 57*b1cdbd2cSJim Jagielski if ( $message eq "ERROR" ) { $subject = "ERROR: $basestring" } 58*b1cdbd2cSJim Jagielski if ( $message eq "SUCCESS" ) { $subject = "SUCCESS: $basestring" } 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski my @message = (); 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski my $recipient_string = join ',', @listener; 63*b1cdbd2cSJim Jagielski push(@message, "Subject: $subject"); 64*b1cdbd2cSJim Jagielski push(@message, "To: $recipient_string"); 65*b1cdbd2cSJim Jagielski push(@message, "\n"); 66*b1cdbd2cSJim Jagielski push(@message, "Located at $destdir"); 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski if ( $message eq "ERROR" ) 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski for ( my $j = 0; $j <= $#installer::globals::errorlogfileinfo; $j++ ) 71*b1cdbd2cSJim Jagielski { 72*b1cdbd2cSJim Jagielski my $line = $installer::globals::errorlogfileinfo[$j]; 73*b1cdbd2cSJim Jagielski $line =~ s/\s*$//g; 74*b1cdbd2cSJim Jagielski push(@message, $line); 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski } 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#message; $i++ ) { $message[$i] = $message[$i] . "\015\012"; } 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski my $smtp = Net::SMTP->new( $smtphost, Hello => $account, Debug => 0 ); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski # set sender 83*b1cdbd2cSJim Jagielski $smtp->mail($sender); 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski # listener 86*b1cdbd2cSJim Jagielski my @good_addresses = (); 87*b1cdbd2cSJim Jagielski $smtp->recipient( @listener, { SkipBad => 1 } ); 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski # send message 90*b1cdbd2cSJim Jagielski $smtp->data(\@message); 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski # quit server 93*b1cdbd2cSJim Jagielski $smtp->quit(); 94*b1cdbd2cSJim Jagielski} 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielskisub send_fail_mail 97*b1cdbd2cSJim Jagielski{ 98*b1cdbd2cSJim Jagielski my ($allsettingsarrayref, $languagestringref, $errordir) = @_; 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski # sending a mail into the error board 101*b1cdbd2cSJim Jagielski my $listener = ""; 102*b1cdbd2cSJim Jagielski $listener = installer::ziplist::getinfofromziplist($allsettingsarrayref, "fail"); 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski if ( $$listener ) 105*b1cdbd2cSJim Jagielski { 106*b1cdbd2cSJim Jagielski my $mailinfo = installer::ziplist::getinfofromziplist($allsettingsarrayref, "mailinfo"); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski if ( $$mailinfo ) { send_mail("ERROR", $listener, $mailinfo, $languagestringref, $errordir); } 109*b1cdbd2cSJim Jagielski else { installer::exiter::exit_program("ERROR: Could not read mailinfo in list file!", "send_fail_mail"); } 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski} 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielskisub send_success_mail 114*b1cdbd2cSJim Jagielski{ 115*b1cdbd2cSJim Jagielski my ($allsettingsarrayref, $languagestringref, $completeshipinstalldir) = @_; 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski # sending success mail 118*b1cdbd2cSJim Jagielski my $listener = ""; 119*b1cdbd2cSJim Jagielski $listener = installer::ziplist::getinfofromziplist($allsettingsarrayref, "success"); 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski if ( $$listener ) 122*b1cdbd2cSJim Jagielski { 123*b1cdbd2cSJim Jagielski my $mailinfo = installer::ziplist::getinfofromziplist($allsettingsarrayref, "mailinfo"); 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski if ( $$mailinfo ) { send_mail("SUCCESS", $listener, $mailinfo, $languagestringref, $completeshipinstalldir); } 126*b1cdbd2cSJim Jagielski else { installer::exiter::exit_program("ERROR: Could not read mailinfo in list file!", "send_success_mail"); } 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski } 129*b1cdbd2cSJim Jagielski} 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski1; 133