Pergunta

Eu gostaria de saber como modificar o código abaixo para caracteres tira =20 no final de muitas linhas, e, principalmente, para classificar as mensagens em ordem cronológica da primeira recebidos ou enviados para a última. Não estou certo se isso seria uma rotina interna Perl ou não.

#!/usr/bin/perl
use warnings;
use strict;
use Mail::Box::Manager;

my $file = shift || $ENV{MAIL};
my $mgr = Mail::Box::Manager->new(
    access          => 'r',
);

my $folder = $mgr->open( folder => $file )
or die "$file: Unable to open: $!\n";

for my $msg ($folder->messages)
{
    my $to          = join( ', ', map { $_->format } $msg->to );
    my $from        = join( ', ', map { $_->format } $msg->from );
    my $date        = localtime( $msg->timestamp );
    my $subject     = $msg->subject;
    my $body        = $msg->body;

    # Strip all quoted text
    $body =~ s/^>.*$//msg;

    print <<"";
From: $from
To: $to
Date: $date
$body

}

Ao tentar executar este eu recebo os seguintes erros:

"meu" variável $ msg máscaras declaração mais cedo no mesmo escopo na linha x.pl 16. erro de sintaxe na linha x.pl 15, perto de "))" erro de sintaxe na linha x.pl 31, perto de "}" (Pode ser um multi-line fugitivo << string que começa na linha 25) Execução de x.pl abortada devido a erros de compilação.

Eu não tenho certeza do porquê, como a sintaxe parece bem.

Foi útil?

Solução

Eu acho que essas instâncias de =20 estão no corpo da mensagem. Lendo um pouco do para Mail :: Mensagem revelará esta nota útil:

Esteja avisado que isso, você retorna um objeto que pode ser codificado:. Uso decodificado () para obter um corpo com dados utilizáveis ??

Assim, em vez de chamar $msg->body em seu loop, basta ligar para $msg->decoded->string.

Realizar a triagem deve ser mais fácil quando você usa Mail::Message::timestamp:

...
for my $msg ( sort { $a->timestamp <=> $b->timestamp } $folder->messages) )
...

Outras dicas

Eu sugiro que olhar para o MIME :: Base64 módulo que inclui módulo MIME :: QuotedPrint :: Perl aos órgãos de decodificação QP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top