1 |
#!/usr/bin/perl |
2 |
use strict 'vars'; |
3 |
#use Mail::Mailer; |
4 |
use POSIX 'uname'; |
5 |
use IO::File; |
6 |
|
7 |
#------- retrieve the local host name |
8 |
|
9 |
my $thisHost= (&POSIX::uname)[1]; # can't trust HOST envvar under condor, because for getenv=TRUE |
10 |
# it will either inherit HOST and HOSTNAME from submitter env |
11 |
# or not set anything for getenv=FALSE |
12 |
# --> so we use POSIX uname() call here |
13 |
chomp($thisHost); |
14 |
$thisHost=lc($thisHost); |
15 |
my ($thisDomain)=($thisHost=~/^[\w\-]+\.(.+)/); |
16 |
|
17 |
#my $def_domain = 'jimmy.harvard.edu'; |
18 |
my $def_domain = $thisDomain; |
19 |
$def_domain=~s/^dfci\./jimmy\./; |
20 |
my $def_host = $thisHost; |
21 |
|
22 |
#---------------------- |
23 |
sub send_mail { |
24 |
my $hash=shift; |
25 |
$hash->{'from'}=$ENV{'USER'}.'@'.$def_host |
26 |
unless defined($hash->{'from'}); |
27 |
my $to=$hash->{'to'}; |
28 |
unless ($to) { |
29 |
$hash->{'to'}=$ENV{'USER'}.'@'.$def_domain; |
30 |
} |
31 |
else { |
32 |
$hash->{'to'}=$to.'@'.$def_domain unless $to =~ m/@/; |
33 |
} |
34 |
|
35 |
my $file; |
36 |
local *ADDFILE; |
37 |
if (defined($hash->{file})) { |
38 |
#warning: assumes it's a decent, short text file! |
39 |
local $/=undef; #read whole file |
40 |
open(ADDFILE, '<'.$hash->{file}) || return "Cannot open file ".$hash->{file}."\n"; |
41 |
$file=<ADDFILE>; |
42 |
close ADDFILE; |
43 |
} |
44 |
my $body = $hash->{'body'}; |
45 |
$body.=$file; |
46 |
my $fh; |
47 |
$fh = IO::File->new('| /usr/lib/sendmail -t -oi') || |
48 |
die("Mailer.pm error: Cannot open the sendmail pipe\n"); |
49 |
$fh->print("To: $hash->{to}\n"); |
50 |
$fh->print("From: $hash->{from}\n"); |
51 |
$fh->print("Subject: $hash->{subj}\n\n"); |
52 |
$fh->print($body); |
53 |
$fh->close(); |
54 |
|
55 |
#-- create the Mail::Mailer object and send the message: |
56 |
# my $mailer = Mail::Mailer->new(); |
57 |
# $mailer->open({ 'From' => $hash->{'from'}, |
58 |
# 'To' => $hash->{'to'}, |
59 |
# 'Cc' => $hash->{'cc'}, |
60 |
# 'Subject' => $hash->{'subj'} |
61 |
# }) |
62 |
# or die "Mailer.pm error: Can't open. $!\n"; |
63 |
#print $mailer $body; |
64 |
#$mailer->close(); |
65 |
} |