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
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to