X-Git-Url: https://diplodocus.org/git/minc/blobdiff_plain/d35dfee3bc771859c87e3118afd95189f43ae9e2..53237e78cea6b9432f4f0fdc5c640dbeacd0ce16:/summarize-mime?ds=inline diff --git a/summarize-mime b/summarize-mime index aface15..0a51cc6 100755 --- a/summarize-mime +++ b/summarize-mime @@ -19,9 +19,10 @@ use strict; use warnings; use v5.14; +use DateTime::Format::Mail; use Email::MIME; -my @fields = ('From', 'To', 'Date', 'Subject'); +my @fields = ('From', 'To', 'Subject'); sub say_header { my $message = shift; @@ -31,6 +32,26 @@ sub say_header { } } +sub say_date { + my $message = shift; + my $parser = DateTime::Format::Mail->new(loose => 1); + my $any_valid = 0; + my $last; + for my $value ($message->header('date')) { + my $dt = eval { $parser->parse_datetime($value) }; + if ($@) { + warn("$@"); + $last = $value; + next; + } + $dt->set_time_zone('local'); + say 'Date: ', $parser->format_datetime($dt); + } + if (!$any_valid && $last) { + say "Date: $last"; + } +} + MAIN: { my $errors = 0; for my $fn (@ARGV) { @@ -46,6 +67,7 @@ MAIN: { for my $field (@fields) { say_header($parsed, $field); } + say_date($parsed); say $parsed->debug_structure; } exit($errors);