#!/usr/bin/perl use warnings; use strict; use English; use Mail::IMAPClient; $ARGV[3] or die "usage: $0 host user password folder uid\n"; my $host = $ARGV[0]; my $user = $ARGV[1]; my $password = $ARGV[2]; my $folder = $ARGV[3]; my $uid = $ARGV[4]; my $imap = Mail::IMAPClient->new(); $imap->Debug(0); $imap->Server($host); $imap->connect() or die; $imap->User($user); $imap->Password($password); $imap->login() or die; $imap->Uid(1); $imap->Peek(1); $imap->Clear(1); #print map {"$_\n"} $imap->folders(); $imap->select($folder) or die; my @msgs = $imap->messages or die "Could not messages: $@\n"; print "@msgs\n"; foreach my $msg (@msgs) { $imap->fetch($msg, "BODY.PEEK[TEXT]<0.3000>"); my $text = $imap->_transaction_literals; print '#' x 72, " $msg TEXT = \n$text\n"; my $part = $imap->bodypart_string($msg, '', 3000, 0); print '#' x 72, " $msg PART = \n$part\n"; } $imap->close(); package Mail::IMAPClient; sub _transaction_literals() { my $self = shift; my $string = ""; foreach my $result (@{$self->{"History"}{$self->Transaction}}) { $string .= $result->[DATA] if defined($result) and $self->_is_literal($result) ; } return $string; }