I'm attempting to modify an existing mailsend program to be able to send a file attachment and need some new ideas. I'm not proficient in PERL at all, so please reply in detail.
#!/usr/bin/perl -w
use strict; # for stronger code
my $numargs = $#ARGV + 1;
if (($numargs > 3) || ($numargs < 1)) {
print "usage : mailsend.pl <logfile> [subject] -t\n";
print "syntax : <logfile> is required. [subject] is optional.
[-t] specifies to send a copy to maileater\n";
print "example: mailsend.pl /tmp/test.log\n";
print "example: mailsend.pl /tmp/test.log Test!\n";
print "example: mailsend.pl /tmp/test.log Test! -t\n";
exit;
}
use Net::SMTP; # net SMTP module
my($smtp) = Net::SMTP->new('inesg2.alliance.lan',Debug => 1);
$smtp->mail('aixreport@countryfinancial.com');
my $host = `uname -a | cut -d " " -f2`;
# my $emseater = 't_ca_mailtrigqa@countryfinancial.com';
my $emseater = 'amy.blass@countryfinancial.com';
my $sendto = 'amy.blass@countryfinancial.com';
my $subject;
chomp ($host);
my $logfile = $ARGV[0];
chomp ($logfile);
if ($numargs > 1) {
$subject = $ARGV[1];
} else {
$subject = join ": ", $host, $logfile;
}
my $message = `cat $ARGV[0]`;
$smtp->data();
$smtp->datasend("Subject: ". $subject . "\n\n");
$smtp->datasend($message);
if ((($numargs == 3) | ($numargs == 4)) && ($ARGV[2] eq "-t")) {
$smtp->to($emseater);
my $emsfile= '/home/unixadmin/emsmksysb.txt';
# $smtp->datasend("MIME-Version: 1.0\n");
# $smtp->datasend("Content-Type: application/text; name=$emsfile
+\n");
$smtp->datasend("Content-Disposition: attachment; filename=\"$
+emsfile\"\n");
# print $smtp ;
## system("ls -l");
## $smtp->datasend("Content-type: text/plain; name=\"$emsfile\"\+
+n");
} else {
$smtp->to($sendto);
}
$smtp->dataend();
$smtp->quit;
The basic part of the PERL that is changing is the if ((($numargs == 3
+) section. I've done basic debugging to know it's getting into that
+ section.
My current debug output is the following:
root@x1aix500.countrylan.net/>perl mailsend.pl '/home/unixadmin/emsmks
+ysb.txt' 'junk' -t
Net::SMTP>>> Net::SMTP(2.29)
Net::SMTP>>> Net::Cmd(2.26)
Net::SMTP>>> Exporter(5.58)
Net::SMTP>>> IO::Socket::INET(1.29)
Net::SMTP>>> IO::Socket(1.29)
Net::SMTP>>> IO::Handle(1.25)
Net::SMTP=GLOB(0x201fd5d8)<<< 220 mail1.countryfinancial.com ESMTP Pro
+xy Server Ready
Net::SMTP=GLOB(0x201fd5d8)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x201fd5d8)<<< 250-mail1.countryfinancial.com Hello x1a
+ix500.countrylan.net [10.78.196.91], pleased to meet you
Net::SMTP=GLOB(0x201fd5d8)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x201fd5d8)<<< 250-PIPELINING
Net::SMTP=GLOB(0x201fd5d8)<<< 250-8BITMIME
Net::SMTP=GLOB(0x201fd5d8)<<< 250 STARTTLS
Net::SMTP=GLOB(0x201fd5d8)>>> MAIL FROM:<aixreport@countryfinancial.co
+m>
Net::SMTP=GLOB(0x201fd5d8)<<< 250 2.1.0 Sender ok
Net::SMTP=GLOB(0x201fd5d8)>>> DATA
Net::SMTP=GLOB(0x201fd5d8)<<< 503 5.5.1 Need RCPT (recipient)
Net::SMTP=GLOB(0x201fd5d8)>>> Subject: junk
Net::SMTP=GLOB(0x201fd5d8)>>> this is a test of the attachment system
+under EMS.
Net::SMTP=GLOB(0x201fd5d8)>>> .
Net::SMTP=GLOB(0x201fd5d8)<<< 500 5.5.1 Command unrecognized: "Subject
+: junk"
Net::SMTP=GLOB(0x201fd5d8)>>> RCPT TO:<amy.blass@countryfinancial.com>
Net::SMTP=GLOB(0x201fd5d8)<<< 500 5.5.1 Command unrecognized: ""
Net::SMTP=GLOB(0x201fd5d8)>>> Content-Disposition: attachment; filenam
+e="/home/unixadmin/emsmksysb.txt"
Net::SMTP=GLOB(0x201fd5d8)>>> .
Net::SMTP=GLOB(0x201fd5d8)<<< 500 5.5.1 Command unrecognized: "this is
+ a test of the attachment system under EMS. "
Net::SMTP=GLOB(0x201fd5d8)>>> QUIT
Net::SMTP=GLOB(0x201fd5d8)<<< 500 5.5.1 Command unrecognized: "."
Any help would be great?