Sorry, no attachment allowed ;-)
Here is the listing:
#!/usr/bin/perl -w
##############################################################################
# Owner : Walter Laub (wla) #
# #
# Name : smtp_send.pl #
# Intention : send mail using SMTP #
# Require : perl #
# #
# 15.10.07 wla : created #
# v1.00, 15.10.07 : first version #
# v1.01, 18.10.07 : improvements #
##############################################################################
# #
my $MyVersion="1.01";
# #
##############################################################################
use strict;
use Net::SMTP;
use Net::Domain qw(hostname hostfqdn hostdomain);
use Getopt::Long;
my %opt=();
my ($subject,$receiver,$sender,$message,$relay,$verbose,$zeile,$istty);
my @receivers;
my $smtp;
$istty=-t STDIN;
# assign input parameters
&GetOptions(\%opt, 'h|help',
's|subject=s',
'c|to=s',
'r|from=s',
'm|message=s',
'relay=s',
'v',
)
or &printusage and exit;
# check if help needed
if ( defined $opt{h} || ! defined $opt{c} ) {
&printusage;
exit;
}
if ( ! defined $opt{relay} ) {
if ( ! defined $ENV{RELAY_MAILER} && ! defined $ENV{SMART_HOST} && !
defined $ENV{RELAY_HOST} ) {
&printusage;
exit;
}
else {
$opt{relay}=$ENV{RELAY_MAILER} if defined $ENV{RELAY_MAILER};
$opt{relay}=$ENV{SMART_HOST} if defined $ENV{SMART_HOST};
$opt{relay}=$ENV{RELAY_HOST} if defined $ENV{RELAY_HOST};
}
}
if ( defined $opt{s} ) {
$subject=$opt{s};
}
else {
$subject=" ";
}
$receiver=$opt{c};
if ( defined $opt{r} ) {
$sender=$opt{r};
}
else {
$sender=$ENV{USERNAME} if defined $ENV{USERNAME}; # MS
$sender=$ENV{LOGNAME} if defined $ENV{LOGNAME}; # Unix
$sender=$sender . '@' . hostfqdn();
}
if ( defined $opt{m} ) {
$message=$opt{m};
}
else {
if ($istty) {
print "Enter your message. Complete with: Unix/Linux: CTRL-D, Windows:
CTRL-Z-RETURN\n";
}
while( $zeile = <> ) {
$message=$message . $zeile;
}
}
$message=" " if not defined $message;
$relay=$opt{relay};
$_=$receiver;
s/,/ /;
@receivers=split / /, $_;
foreach (@receivers) {
if ( defined $opt{v} ) {
$smtp = Net::SMTP-> new($relay, Timeout => 30, Debug => 1,);
}
else {
$smtp = Net::SMTP-> new($relay, Timeout => 30);
}
$smtp-> mail($sender);
$smtp-> to($_);
$smtp-> data();
$smtp-> datasend("Subject: $subject\n");
$smtp-> datasend("To: $_\n");
$smtp-> datasend("From: $sender\n");
$smtp-> datasend("\n");
$smtp-> datasend("$message\n");
$smtp-> dataend();
$smtp-> quit;
}
sub printusage {
# like a manpage
print "\n";
print " NAME\n";
print " smtp_send.pl - send mail using SMTP\n";
print "\n";
print " SYNTAX\n";
print " smtp_send.pl [-s subject]\n";
print " [-c receiver]\n";
print " [-r sender]\n";
print " [-m message]\n";
print " [-relay relay]\n";
print " [-h]\n";
print "\n";
print " DESCRIPTION\n";
print " This script send messages trough the SMTP protocol.\n";
print " A receiver and relay host is needed.\n";
print " Example: smtp_send.pl -c [EMAIL PROTECTED] -relay
relayserver.domain\n";
print " Reading from a pipe is also supported:\n";
print " Example: Windows: echo my message | perl smtp_send.pl ......
\n";
print " Unix: echo \"my message\" | smtp_send.pl ......
\n";
print "\n";
print " OPTIONS\n";
print " -s Specifies a subject for the message\n";
print "\n";
print " -c Specifies the list of users to which the message is
send.\n";
print " When specifying more than one address, the list of
addresses\n";
print " must be in \"\" qotes.\n";
print "\n";
print " -r Specifies the sender of the message\n";
print "\n";
print " -m The message. If not specified, the message is read
from STDIN.\n";
print " Type CTRL-D (Unix), CTRL-Z-RETURN (Windows) at end
of message.\n";
print "\n";
print " -relay The relay host. If not specified, the variables
RELAY_MAILER,\n";
print " SMART_HOST, RELAY_HOST are checked\n";
print "\n";
print " -h This text.\n";
print "\n";
}
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs