#************************************************************** # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # #************************************************************** package installer::mail; use Net::SMTP; use installer::converter; use installer::exiter; use installer::ziplist; ######################################### # Sending a mail ######################################### sub send_mail { my ($message, $listenerstring, $mailinfostring, $languagesref, $destdir) = @_; my $listener = installer::converter::convert_stringlist_into_array($listenerstring, ","); my $mailinfo = installer::converter::convert_stringlist_into_array($mailinfostring, ","); my @listener = (); for ( my $i = 0; $i <= $#{$listener}; $i++ ) { push(@listener, ${$listener}[$i]); } for ( my $i = 0; $i <= $#{$mailinfo}; $i++ ) { ${$mailinfo}[$i] =~ s/\s*$//g; } my $smtphost = ${$mailinfo}[0]; my $account = ${$mailinfo}[1]; my $sender = ${$mailinfo}[2]; if ( ! $smtphost ) { installer::exiter::exit_program("ERROR: Could not read SMTP Host in list file!", "send_mail"); } if ( ! $account ) { installer::exiter::exit_program("ERROR: Could not read Account in list file!", "send_mail"); } if ( ! $sender ) { installer::exiter::exit_program("ERROR: Could not read Sender in list file!", "send_mail"); } my $subject = ""; my $basestring = $installer::globals::product . " " . $installer::globals::compiler . $installer::globals::productextension . " " . $installer::globals::build. " " . $installer::globals::buildid . " " . $$languagesref . "\n"; if ( $message eq "ERROR" ) { $subject = "ERROR: $basestring" } if ( $message eq "SUCCESS" ) { $subject = "SUCCESS: $basestring" } my @message = (); my $recipient_string = join ',', @listener; push(@message, "Subject: $subject"); push(@message, "To: $recipient_string"); push(@message, "\n"); push(@message, "Located at $destdir"); if ( $message eq "ERROR" ) { for ( my $j = 0; $j <= $#installer::globals::errorlogfileinfo; $j++ ) { my $line = $installer::globals::errorlogfileinfo[$j]; $line =~ s/\s*$//g; push(@message, $line); } } for ( my $i = 0; $i <= $#message; $i++ ) { $message[$i] = $message[$i] . "\015\012"; } my $smtp = Net::SMTP->new( $smtphost, Hello => $account, Debug => 0 ); # set sender $smtp->mail($sender); # listener my @good_addresses = (); $smtp->recipient( @listener, { SkipBad => 1 } ); # send message $smtp->data(\@message); # quit server $smtp->quit(); } sub send_fail_mail { my ($allsettingsarrayref, $languagestringref, $errordir) = @_; # sending a mail into the error board my $listener = ""; $listener = installer::ziplist::getinfofromziplist($allsettingsarrayref, "fail"); if ( $$listener ) { my $mailinfo = installer::ziplist::getinfofromziplist($allsettingsarrayref, "mailinfo"); if ( $$mailinfo ) { send_mail("ERROR", $listener, $mailinfo, $languagestringref, $errordir); } else { installer::exiter::exit_program("ERROR: Could not read mailinfo in list file!", "send_fail_mail"); } } } sub send_success_mail { my ($allsettingsarrayref, $languagestringref, $completeshipinstalldir) = @_; # sending success mail my $listener = ""; $listener = installer::ziplist::getinfofromziplist($allsettingsarrayref, "success"); if ( $$listener ) { my $mailinfo = installer::ziplist::getinfofromziplist($allsettingsarrayref, "mailinfo"); if ( $$mailinfo ) { send_mail("SUCCESS", $listener, $mailinfo, $languagestringref, $completeshipinstalldir); } else { installer::exiter::exit_program("ERROR: Could not read mailinfo in list file!", "send_success_mail"); } } } 1;