2011-12-15 40 views
0
use MIME::Parser; 
use Data::Dumper qw(Dumper); 

$parser = MIME::Parser->new(); 
$parser->output_to_core(1); # don't write attachments to disk 

while (<STDIN>) { 
$MESSAGE .= $_; 
} 

$message = $parser->parse_data($MESSAGE); # die()s if can't parse 

$head = $message->head(); # object--see docs 
$preamble = $message->preamble; # ref to array of lines 
$epilogue = $message->epilogue; # ref to array of lines 

$num_parts = $message->parts; 
for (my $i=0; $i < $num_parts; $i++) { 
    print "part number = $i\n"; 
    my $part = $message->parts(1); 
    my $content_type = $part->mime_type; 
    my $body = $part->as_string; 
    print $body; 
} 

在輸出中,我也可以看到內容標題。我們是否有任何進程只將消息正文內容收集到數組中?如何使用MIME :: Parser從郵件中獲取正文部分?

在此先感謝。

+0

你爲什麼要將STDIN讀入$ MESSAGE?爲什麼不只是$ parser-> parse(\\ * STDIN)? – runrig 2011-12-15 16:53:59

回答

3

my $body = $part->as_string;是錯誤的。 MIME部分($part是類MIME::Entity的一個實例)由標頭,正文和尾聲組成。

這應該改爲my @body_encoded_lines = $part->body(行列表)或my $body_decoded_handle = $part->bodyhandle(​​的實例)。

相關問題