+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";
+ }
+}
+