1

HTMLメールをプレーンテキストに変換するためにperlスクリプトを使用しています。

現在のコード (マルチパート メールの場合) は次のようになります。

my $parser = new MIME::Parser;
my $entity = $parser->parse(\*STDIN) or die "parse failed\n";

for my $part ($entity->parts()) {
 if ($part->mime_type eq 'text/html') {
 my $bh = $part->bodyhandle;

 my $tree = HTML::TreeBuilder->new();
 $tree->utf8_mode();
 $tree->parse($bh->as_string);

 my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 72);
 my $txt = $formatter->format($tree);

 my $txtEntity=MIME::Entity->build(Data  => $txt,
                                 Type  => "text/plain",
                                 Encoding => "8bit"
                                 );

 $entity->add_part($txtEntity,0);
 }
}
$entity->print(\*STDOUT);

それは機能しますが、プレーンテキスト部分を既存の部分に追加するだけで、HTML部分を置き換えません。
だから私はこれを思いついた:

my $head = $entity->head;

my $txtEntity=MIME::Entity->build(Data  => $txt,
                               Type  => "text/plain",
                               Encoding => "8bit",
                               From    => $head->get('From',0),
                               To      => $head->get('To',0),
                               Subject => $head->get('Subject',0),
                               Cc => $head->get('Cc',0)
                               );

$txtEntity->print(\*STDOUT);

ただし、これにより、電子メール ヘッダーの一部が削除される可能性があります。HTMLの本文をプレーンテキストに完全に置き換える機能はありますか?

ありがとう!

4

1 に答える 1