Finalmente ho trovato un po' di tempo per finire questo script, credo ci sia molto da limare(soprattutto sull'uso del pragma strict e dell'inizializzazione delle var.ho molti dubbi!) però.... sembra che funzioni, in fondo è il mio primo script in perl!
Ovviamente se ci sono suggerimenti per migliorarlo sono tutto orecchie
Lo script è per un sito di cartoline.
Teoricamente prende le mail da un server POP3, verifica che sia una mail di notifica di mancata consegna, estrae il mittente originario ed infine il contenuto html della mail.
codice:
#!/usr/local/bin/perl -w
use Net::POP3;
use Mail::Sender;
use strict;
use warnings;
#si connette ad un server POP3 ed inizializza le variabili
my $msgnums;
my $msgcontent;
my @mail_prova;
my $mittente;
my $contenuto;
my $subject;
my $popserver='xxxx.xxxx';
my $username='xxxx@xxxx.xxx';
my $password='xxxxxx';
my $pop = Net::POP3->new($popserver, Timeout => 60);
if ($pop->login($username, $password) > 0)
{
my $msgnums = $pop->list; #prende la lista dei messaggi
foreach my $msgnum (keys %$msgnums)
{
my $msgcontent = $pop->get($msgnum); #legge la mail
@mail_prova=@$msgcontent; #copia il contenuto del array punt in un array
$_="@mail_prova";
#ricava il mittente
if ($_=~ /\s*(MAILER-DAEMON)/g) #verifica che il subject sia una notifica di mancata consegna
{
while ($_ =~ /\s*From:\s*(.+)/g)
{
$mittente = $1;
}
#ricava l'html della mail
if ($_=~ /\s*text\s*\/\s*html\s*(.+)/gs)
{
$contenuto=$1;
}
}
}
}
P.S. Scusate la formattazione ma ho fatto copia ed incolla al volo e grazie per gli aiuti ricevuti