メールをheader部とbody部に分解・解析 (module)MIME-Parser
back
単純に「最初の空行までがヘッダ、残りがボディ」ということで
while (<FH>) {
last if (/^$/);
$header .= $_;
}
while (<FH>) {
$body .= $_;
}
みたいな感じで。
各フィールド名とフィールドボディはうまいこと split するべし。
モジュールを使うなら、MIME::Parser で
(MIME::Tools に同梱)
----
use MIME::Parser;
my $parse = new MIME::Parser;
$parse->output_to_core(1);
my $buf = (メールデータの取得);
my $entity = $parse->parse_data($buf);
$from = $entity->head->get('from');
$to = $entity->head->get('to');
$receive_count = $entity->head->count('received');
$receive[0] = $entity->head->get('received', 0);
@receives = $entity->head->get('received');
$headers = $entity->head->stringify;
$headers = $entity->head->header;
$subject = $entity->head->decode->get('subject');
$parse->decode_headers(1);
$body = $entity->body;
foreach (@$body) {
print;
}
back