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