Skip to content.
Script > InviaRiceviFiles > InviaRiceviFiles01Versione

#!/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


Ultima versione: r1.1 - 10 Mar 2005 - 15:19 - Main.guest
 
Se riconosciuto dal sistema come utente: Main.guest