#!/usr/bin/perl
# Moduli caricati e necessari per il corretto funzionamento del programma
use Mail::Sender;
use Net::POP3;
use strict;
use MIME::Parser;
use File::Find;
use File::Copy;
# Variabili utilizzate dal programma, eventualmente modificabili.
# Directory che continene i files da spedire
my $dir="C:\\Documents and Settings\\dip8a01015\\Dati applicazioni\\Mozilla\\Firefox\\Profiles\\onemz83m.default\\Calendar";
# Server SMTP e POP3 utilizzati per spedire e ricevere le mail
# Seguono username, password, subject e messaggio della mail
my $smtp='smtp.ditta.it';
my $pop3='pop.ditta.it';
my $username='pippo';
my $password='pippomail';
my $subject='Ecco il file';
my $messaggio="Ecco il file";
# Mittente e destinatario delle mail.
# Attenzione: entrambi devono essere degli indirizzi di posta!
my $from='pippo@ditta.it';
my $to='pippo@ditta.it';
# Un array contenente i files da spedire in attach
my @lista_di_files=("$dir\\CalendarDataFile.ics","$dir\\Personale.ics");
# Directory temporanea dove mettere i file in transito prima di
# essere decodificati e dove saranno messi in seguito alla decodifica
# ATTENZIONE: METTI IL PATH COMPLETO!!
my $tmp='C:\Documents and Settings\dip8a01015\Desktop\prova\tmp';
my $out='C:\Documents and Settings\dip8a01015\Desktop\prova\definitivo';
my @directories_to_search=($tmp);
####################################################################
#
# INIZIO PROGRAMMA: DA QUI NON TOCCARE
#
####################################################################
if($ARGV[0] eq 'spedisci'){
print "Sto per spedire i file richiesti!!\n";
my $sender = new Mail::Sender{smtp => $smtp, from => $from};
$sender->MailFile({ to => $to,
subject => $subject,
msg => $messaggio,
file => \@lista_di_files});
}
elsif($ARGV[0] eq 'ricevi'){
my $pop = Net::POP3->new($pop3, Timeout => 60) or die "Non riesco a collegarmi!!";
if ($pop->login($username, $password) > 0) {
my $msgnums = $pop->list;
print "Sto per ricevere la posta desiderata!!\n";
foreach my $msgnum (keys %$msgnums) {
my $msg = $pop->get($msgnum);
my $ok=0;
my @transito=@$msg;
foreach my $riga (@transito){
chomp $riga;
$ok++ if($riga eq "To: $to"
or
$riga eq "From: $from"
or
$riga eq "Subject: $subject");
}
if($ok==3){
print "Faccio il parser del messaggio $msgnum e lo cancello!\n";
open FILE, ">$tmp/transito.txt";
print FILE @$msg;
close FILE;
open FILE, "$tmp/transito.txt";
my $parser = new MIME::Parser;
$parser->output_under("./tmp");
my $entity = $parser->parse(\*FILE);
close FILE;
$pop->delete($msgnum);
}
else{
print "Il messaggio $msgnum non viene analizzato!\n";
}
}
}
$pop->quit;
find(\&wanted, @directories_to_search);
}
else{
print "Devi mettere, come argomento \"ricevi\" o \"spedisci\"\n";
}
sub wanted{
if($_!~/^msg/ and $_!~/^\./ and $_!~/^transito/){
print "Sposto $_ \n";
move("$File::Find::name","$out/$_") or die "Copia di $_ in $out/$_ non riuscita: $!";
}
}
--
VittorioZuccala - 10 Mar 2005