http://qs1969.pair.com?node_id=469311
Category: E-Mail Programs
Author/Contact Info holli
Description: A Simple tool to send mails from the command line via a smptp server.
# 
# EDVMAIL 0.2
#
use warnings;
use strict;

use Mail::Sender;
use File::Slurp;

use Getopt::Attribute;
use Getopt::ArgvFile;

our $to          : Getopt(an=s);
our $from        : Getopt(absender=s EDV);
our $subject     : Getopt(betreff=s);
our $password    : Getopt(passwort=s xxxx);
our $mode        : Getopt(modus=s html);

our @cc          : Getopt(cc=s);
our @mailfiles   : Getopt(dateien=s);
our @attachments : Getopt(attachments=s);
our @lines       : Getopt(zeilen=s);

die "Kein Adressat angegeben!\n"   . usage()
    unless defined $to;

die "Kein Betreff angegeben!\n"    . usage()
    unless defined $subject;

die "Keine Nachricht angegeben!\n" . usage()
    unless (@mailfiles or @lines);

my ($br, $ctype);

if ( $mode =~ /html/i )
{
    $br    = "<br>";
    $ctype = "text/html";
}
else
{
    $br    = "";
    $ctype = "text/plain";
}    

my $sender = new Mail::Sender 
{

    smtp    => '192.168.1.23', 
    from    => "$from\@kvsaarland.de",
    authid  => $from,
    authpwd => $password,
}
or die "Mail::Sender Objekt kann nicht erstellt werden: $Mail::Sender:
+:Error\n";

$sender->OpenMultipart
({
    to => $to, 
    subject => $subject, 
    cc => [@cc],
    boundary => ""
});

$sender->Body({ encoding => 'ISO-8859-1', ctype=>$ctype });

$sender->Send('<font face="Arial" size="2">')
    if $br;

if ( @lines )
{
    $sender->Send ( map { chomp; "$_$br\n" } @lines )
        or die "$Mail::Sender::Error\n";
}

if ( @mailfiles )
{
    $sender->Send ( map { map { chomp; "$_$br\n" } read_file ($_) } @m
+ailfiles )
        or die "$Mail::Sender::Error\n";
}

$sender->Send('</font>')
    if $br;

if ( @attachments )
{
    $sender->Send   ( "$br\n" x 2 ),
    $sender->Attach ( { file => $_ } ) 
        for @attachments;
}

$sender->Close()
    or die "Nachricht kann nicht gesendet werden: $sender->{'error_msg
+'}\n";

print "Nachricht versendet.\n";
    
sub usage
{
    return <<'USAGE';
edvmail.pl - 0.2

Aufruf:
 edvmail -parameter [wert]

Parameter:
 -ab(sender)      opt. Absender (ohne "@kvsaarland.de", default: EDV)
 -an              erf. Empf„nger
 -cc            * opt. Blindkopie
 -b(betreff)      erf. Betreff
 -p(asswort)      opt. Passwort, default "xxxx"
 -d(atei)       * opt. Textdateien fr den Text der Mail
 -at(tachments) * opt. Anh„nge
 -z(eilen)      * opt. Textzeilen
 -m(odus)         opt. "text" or "html", default "html"

Mit * gekennzeichnete Parameter können mehrfach angegeben werden.

Beispiel:
 edvmail -ab m.holzer -an p.balfie@kvsaarland.de -cc m.taller@kvsaarla
+nd.de 
         -b "Na ihr Luschen?" -z "Was Lustiges" -z "im Anhang" -at c:\
+witze.txt
USAGE
}