use Net::SMTP; use Getopt::Long; use Win32::AdminMisc; my ($opt_help, $opt_smtp, $opt_from, $opt_to, $opt_subject, $opt_msg, $opt_file, $opt_version); if (@ARGV > 0) { GetOptions("smtp=s" => \$opt_smtp, "from|f=s" => \$opt_from, "to|t=s" => \$opt_to, "sujet|subject|s=s" => \$opt_subject, "msg|message|m=s" => \$opt_msg, "file|fichier=s" => \$opt_file, "help|h|?" => \$opt_help, "info|i" => \$opt_info ) or die "$!\n"; } else { $opt_help = 1; } if (defined $opt_help) { print < -from|f -to|t= -sujet|subject|s -message|msg|m "" -file|fichier | [-help|h|?] | [-info|i] EOF exit; } # drive_remote, Drive_ramdisk exclus... if ( $smtp = Net::SMTP->new("$opt_smtp") ) { $smtp->mail("$opt_from"); $smtp->to("$opt_to"); $smtp->data(); $smtp->datasend("From: $opt_from\n"); $smtp->datasend("To: $opt_to\n"); $smtp->datasend("Subject: $opt_subject\n"); $smtp->datasend("\n$opt_msg\n"); if (defined $opt_info ) { %memory=Win32::AdminMisc::GetMemoryInfo(); @Dcdrom=Win32::AdminMisc::GetDrives( DRIVE_CDROM ); @Dfixed=Win32::AdminMisc::GetDrives( DRIVE_FIXED ); @Dremovable=Win32::AdminMisc::GetDrives( DRIVE_REMOVABLE ); $smtp->datasend("Memory : $memory{RAMTotal}\n"); $smtp->datasend("Fixed drives : @Dfixed\n"); $smtp->datasend("CDROM drives : @Dcdrom\n"); $smtp->datasend("Remov drives : @Dremovable\n"); foreach $dfixed (@Dfixed) { ($Total, $Available)=Win32::AdminMisc::GetDriveSpace("$dfixed"); for ($i=3 ; $i < length($Total) ; $i += 4 ) {substr($Total,-$i,0) = '.' ; } for ($i=3 ; $i < length($Available) ; $i += 4 ) {substr($Available,-$i,0) = '.' ; } $smtp->datasend("Taille $dfixed : $Total\n"); $smtp->datasend("Libre $dfixed : $Available\n"); } } if (defined $opt_file ) { open(FILE,"<$opt_file"); $smtp->datasend("======= Contenu du fichier $opt_file ==========\n"); while () { $smtp->datasend("$_"); } $smtp->datasend("======= Fin Contenu du fichier $opt_file ======\n"); close (FILE); } $smtp->dataend(); $smtp->quit; } else { die "Serveur smtp : $opt_smtp unreachable"; }