]> diplodocus.org Git - minc/commitdiff
Add trivial program to summarize header and MIME info.
authorepg <epg@pretzelnet.org>
Mon, 14 Apr 2014 01:21:12 +0000 (18:21 -0700)
committerepg <epg@pretzelnet.org>
Mon, 14 Apr 2014 01:21:12 +0000 (18:21 -0700)
summarize-mime [new file with mode: 0755]

diff --git a/summarize-mime b/summarize-mime
new file mode 100755 (executable)
index 0000000..aface15
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/local/bin/perl
+
+=head1 NAME
+
+B<summarize-mime> - summarize headers and MIME structure of email messages
+
+=head1 SYNOPSIS
+
+B<summarize-mime> I<message-files>
+
+=head1 DESCRIPTION
+
+Print From, To, Date, and Subject header fields along with a summary of the MIME
+structure of the email message in each file.
+
+=cut
+
+use strict;
+use warnings;
+use v5.14;
+
+use Email::MIME;
+
+my @fields = ('From', 'To', 'Date', 'Subject');
+
+sub say_header {
+    my $message = shift;
+    my $field = shift;
+    for my $value ($message->header($field)) {
+        say "$field: $value";
+    }
+}
+
+MAIN: {
+    my $errors = 0;
+    for my $fn (@ARGV) {
+        say $fn;
+        my $fp;
+        if (!open($fp, $fn)) {
+            $errors++;
+            warn("open($fn): $!");
+            next;
+        }
+        my $text = join('', (<$fp>));
+        my $parsed = Email::MIME->new($text);
+        for my $field (@fields) {
+            say_header($parsed, $field);
+        }
+        say $parsed->debug_structure;
+    }
+    exit($errors);
+}