--- a/isearch Wed Dec 21 14:14:37 2011 +0100
+++ b/isearch Mon Jan 02 11:53:59 2012 +0100
@@ -23,9 +23,12 @@
use strict;
use warnings;
+defined and /utf.*8/i and binmode(STDOUT, ":utf8") and last for @ENV{qw(LANG LC_CTYPE LC_ALL)};
+
use Getopt::Long;
use Pod::Usage;
use Mail::IMAPTalk;
+use MIME::WordDecoder qw(unmime);
sub folders($);
@@ -99,8 +102,8 @@
my $e = $@;
# skip folder with invalid name
- if ( $e =~ /BAD Error in IMAP command EXAMINE: 8bit data in atom$/
- or $e =~ /NO Invalid mailbox name: /) {
+ if ( $e =~ /Error in IMAP command EXAMINE: 8bit data in atom$/
+ or $e =~ /Invalid mailbox name: /) {
warn "[WARN] Can't examine '$_': $e";
print "Skipping $_ ...\n";
@@ -139,7 +142,7 @@
}
-my @headers = qw(subject from to cc bcc date);
+my @headers = qw(Subject From To Cc Bcc Date);
for my $f (sort keys %{$mids}) {
my $m = $mids->{$f};
@@ -148,14 +151,15 @@
$imap->examine($f)
or die "Can't examine: " . $@ . "\n";
- my $h = $imap->parse_headers($mids->{$f}, @headers)
- or die "Can't get summaries: " . $@ . "\n";
+ my $envelopes = $imap->fetch($mids->{$f}, 'envelope')
+ or die "Can't get envelopes: " . $@ . "\n";
- for my $id (keys %{$h}) {
+ for my $id (keys %{$envelopes}) {
print "\n[$f] [$id]\n";
- for my $hn (@headers) {
- print ucfirst $hn . ": $_\n" for @{ $h->{$id}->{$hn} };
+ for my $h (@headers) {
+ my $v = unmime($envelopes->{$id}->{envelope}->{$h});
+ print ucfirst $h . ": $v\n" if $v;
}
}