ENC: [FUGSPBR] Ler e-mail automaticamente !

Renato Previdelli raprevidelli em construtivo.com
Seg Jan 10 12:05:39 BRST 2005


Jean , 

Eu utilizo este script que eu adaptei para remover fotos que chegam
anexadas a emails . 

Modifico o scritp alterando user, pass, mail_account, pop-server,
diretorio de destino do anexo e salvando como o nome da caixa postal que
quero retirar.

Após coloco na cron para rodar de 10 em 10 min .. 

Agora para envia o arquivo por email , eu utilizo outro script assim : 

(echo "Log de emails enviados "; uuencode ./$1.zip $1.zip ) | mail -s
"log do se rvidor de email" baba em dominio.com.br 

QQ duvida , PVT !! 

Renato Previdelli

******************************
Script para recepcao de anexos
******************************

#!/usr/bin/perl
############################
# pop3 & attachment prober #
# adapted by - Renato      #
############################
$var=1;
$data=`/usr/bin/date`;

# neste exemplo , uso data como nome do diretorio $dir_data=`/bin/date
+%Y.%m.%d`;

# podendo ser o padrao:
$dir_data='/home/fotos/';


########
#SETUP #
########

#Choose username:
$user="username em baba.com";

#Choose password:
$pass="password";

#Choose server:
$server="pop3.dominio.com.br";

#Insert temporary directory:
$tmpdir="/tmp";

#Secondary temporary directory:
$tmpdirb="/home/data/tmp2";
#Insert output directory
$out="$dir_data";

#Insert home directory
$home="/home/data";

############################################
#  nao toque em nada daqui para frente !!! # 
############################################

&POP3();
open (TMPFILE, ">$home/last");
foreach $line(@arr) {
print TMPFILE $line, "\n";
if ($var == 1) {
if ($line =~ /Content-Type/i) {
if ($line =~ /text/i) {
$var = 1;
}
elsif ($line =~ /multipart/) {
$var = 1;
}
else {
$i++;
open (FILE, "> $tmpdir/file$i");
$var = 2;
print FILE $line, "\n";
push(@arh, "file$i");
}
}
}
elsif ($var == 2) {
if ($line =~ /--/) {
$var = 1;
close FILE;}
else {
print FILE $line, "\n";
}
}
}
close FILE;
open (BF, "/home/data/buffer");
foreach $nonsopiuchenomedare(<BF>)  {
push (@soggetti, $nonsopiuchenomedare);
}
close BF;
chomp @arh;
@hash{@arh}=(@soggetti);
foreach $chiavi(keys %hash) {
print "il soggetto e'  $hash{$chiavi} il file e' $chiavi";
$tmpvar=$hash{$chiavi}; chomp $tmpvar;

PARSING();
}

sub POP3
{
use Net::POP3;
open (BUFFER, ">/home/data/buffer");
my $ServerName = "$server";
my $pop3 = Net::POP3->new($ServerName);
die "Couldn't log on to server" unless $pop3;
$UserName = "$user";
$Password = "$pass";
$Num_Messages = $pop3->login($UserName, $Password);
$Messages = $pop3->list();
foreach $msg_id (keys(%$Messages)) {
$ass = $pop3->get($msg_id);
my $MsgContent = $pop3->top($msg_id, 20); PrintList(@$MsgContent);
Elabora(@$ass);
$pop3->delete($msg_id)
}
$pop3->quit();
close BUFFER;
sub Elabora
{
@speriamo = @_;
foreach $linee(@speriamo) {
chomp $linee;
push (@arr, $linee);
}
}
sub PrintList
{
my (@lines) = @_;
my ($from, $line, $subject);
foreach $line (@lines)
{
if($line =~ m/^From: (.*)/)
{
$from = $1;
$from =~ s/"|<.*>//g;
$from = substr($from, 0, 39);
}
elsif( $line =~ m/^Subject: (.*)/)
{
$subject = $1;
$subject = substr($subject, 0, 29);
}last if( defined($subject) && defined($from) );
}
printf BUFFER "%-40s%s\n", $subject;
}
}

sub PARSING
{
use MIME::Parser;
use File::Basename;
my $output_path = "$tmpdirb";
#my ($parsed) = (basename($0))[0];
my $input_file = "$tmpdir/$chiavi";
my $parser = MIME::Parser->new(); $parser->output_dir($output_path);
$parser->output_prefix($parsed);
$parser->output_to_core();
open(INPUT, "$input_file") or die("Input error: $!");
my $entity = $parser->read(\*INPUT)
    or die "couldn't parse MIME stream";
close(INPUT);
unlink "$tmpdir/$chiavi";
$zipfile=`/usr/bin/ls $tmpdirb`;
#$unzip=`/usr/bin/unzip -o -d $tmpdirb $tmpdirb/$zipfile `;
#$unzip=`/usr/bin/unzip -o -d $tmpdirb $tmpdirb/* `;
#$remove=`/usr/bin/rm -f -r $tmpdirb/$zipfile`; $mk=`mkdir $out`;
$copia=`/bin/cp -r $tmpdirb/* $out/ `; $rimuovi=`rm -r -f $tmpdirb/*`;
chomp $zipfile; print "I received file $zipfile and took it to
$out($data)\n\n\n"; }


## EOF !!! 

-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: smime.p7s
Tipo: application/x-pkcs7-signature
Tamanho: 3046 bytes
Descrição: não disponível
URL: <http://www.fug.com.br/pipermail/freebsd/attachments/20050110/c9e72b20/attachment.bin>


Mais detalhes sobre a lista de discussão freebsd