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;
}
}
+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) {
for my $field (@fields) {
say_header($parsed, $field);
}
+ say_date($parsed);
say $parsed->debug_structure;
}
exit($errors);