You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
3.4 KiB
170 lines
3.4 KiB
#!/usr/bin/perl
|
|
#
|
|
# SendMail.pl -- This is a simple SendMail.pm module
|
|
# to send a mail.
|
|
# $Id: SendMail.pl 74 2011-04-20 19:55:19Z $
|
|
|
|
use warnings;
|
|
use strict;
|
|
use SendMail 2.09;
|
|
|
|
# config stuff
|
|
my $value;
|
|
my $debug;
|
|
my $smtp_server;
|
|
my $smtp_port;
|
|
my $AuthReq;
|
|
my $AuthLogin;
|
|
my $AuthPass;
|
|
my $Sender;
|
|
|
|
# main
|
|
my @body_data = <STDIN>;
|
|
my $numArgs = $#ARGV + 1;
|
|
my $EAddr;
|
|
my $SubJect;
|
|
my $sm;
|
|
my $argnum;
|
|
|
|
# Read Configuation File
|
|
open(CFG, "/home/irlp/custom/SendMail/SendMail.cfg") || die("Could not open file!");
|
|
while (<CFG>) {
|
|
s/#.*//; # ignore comments by erasing them
|
|
next if /^(\s)*$/; # skip blank lines
|
|
chomp;
|
|
next unless my($key,$value) = split /=/;
|
|
# s/^"//, s/"$// for $key, $value;
|
|
s/^"//,s/"$// for $key, $value;
|
|
|
|
#remove whitespaces "value=ON "
|
|
$value =~ s/(^\s+|\s+$)//g;
|
|
|
|
# simple parse
|
|
if ($key eq 'debug') {
|
|
$debug=$value;
|
|
} elsif ($key eq 'smtp_server') {
|
|
$smtp_server=$value;
|
|
} elsif ($key eq 'smtp_port') {
|
|
$smtp_port=$value;
|
|
} elsif ($key eq 'AuthReq') {
|
|
$AuthReq=$value;
|
|
} elsif ($key eq 'AuthLogin') {
|
|
$AuthLogin=$value;
|
|
} elsif ($key eq 'AuthPass') {
|
|
$AuthPass=$value;
|
|
} elsif ($key eq 'Sender') {
|
|
$Sender=$value;
|
|
}
|
|
}
|
|
close CFG;
|
|
|
|
if ($debug eq 'ON') {
|
|
print "== Debug Start ================\n";
|
|
print "debug=[$debug] \n";
|
|
print "smtp_server=[$smtp_server] \n";
|
|
print "smtp_port=[$smtp_port] \n";
|
|
print "AuthReq=[$AuthReq] \n";
|
|
print "AuthLogin=[$AuthLogin] \n";
|
|
print "AuthPass=[$AuthPass] \n";
|
|
print "Sender=[$Sender] \n\n";
|
|
}
|
|
|
|
# check minimal required variables smtp_server, smtp_org, Sender
|
|
|
|
|
|
## debug info
|
|
if ($debug eq 'ON') {
|
|
print "============================\n";
|
|
print "$numArgs command-line arguments:\n";
|
|
|
|
foreach $argnum (0 .. $#ARGV) {
|
|
print " $argnum -- $ARGV[$argnum]\n";
|
|
}
|
|
}
|
|
|
|
## if no arguments, exit with syntax rule
|
|
if ($numArgs == 0) {
|
|
print "Command Syntax...\n";
|
|
exit 0;
|
|
}
|
|
|
|
# if argv 0 = -s then argv1 is the subject, if not subject=blank
|
|
|
|
if ($ARGV[0] eq '-s') {
|
|
$SubJect = $ARGV[1];
|
|
$EAddr = $ARGV[2];
|
|
} else {
|
|
# else set subject to blank, and set email address
|
|
$SubJect = "";
|
|
$EAddr = $ARGV[0];
|
|
}
|
|
|
|
## debug stuff
|
|
if ($debug eq 'ON') {
|
|
print "============================\n";
|
|
if ($numArgs == 2) {
|
|
print "ArgV1: $ARGV[1]\n";
|
|
}
|
|
print "Subject is: $SubJect \n";
|
|
print "Email Address is $EAddr \n";
|
|
}
|
|
|
|
#
|
|
# Create the object without any arguments, # i.e. localhost is the default SMTP server.
|
|
#
|
|
$sm = new SendMail("$smtp_server", $smtp_port);
|
|
|
|
## Set SMTP AUTH login profile.
|
|
if ($AuthReq eq 'YES') {
|
|
$sm->setAuth($sm->AUTHLOGIN, "$AuthLogin", "$AuthPass");
|
|
}
|
|
|
|
## Turn on debugging in SendMail Module
|
|
#
|
|
if ($debug eq 'ON') {
|
|
# We set the debug mode "ON".
|
|
#
|
|
$sm->setDebug($sm->ON);
|
|
} else {
|
|
$sm->setDebug($sm->OFF);
|
|
}
|
|
|
|
#
|
|
# We set the sender.
|
|
#
|
|
$sm->From("<$Sender>");
|
|
|
|
## Set the Subject
|
|
#
|
|
$sm->Subject("$SubJect");
|
|
|
|
## use argument for address
|
|
#
|
|
$sm->To("<$EAddr>");
|
|
|
|
## use STDIN for body of text
|
|
#
|
|
$sm->setMailBody("@body_data");
|
|
|
|
### Not used
|
|
#
|
|
# Attach a testing image.
|
|
#
|
|
## $sm->Attach("./welcome.gif");
|
|
|
|
## Check if the mail sent successfully or not.
|
|
#
|
|
if ($sm->sendMail() != 0) {
|
|
print $sm->{'error'}."\n";
|
|
exit -1;
|
|
}
|
|
|
|
#
|
|
# Mail sent successfully.
|
|
#
|
|
if ($debug eq 'ON') {
|
|
print "==Debug End ====================\n";
|
|
}
|
|
|
|
exit 0;
|