Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Heres what i'm trying to do login to a pop email box on MS Exchange, grab all the messages loop through them if the message has a attachment, parse it for a certain string and move on. All my searches have lead me to MIME::Parser. The question is how do i use it with Mail::POP3Client. My code is listed below.
use Mail::POP3Client; use MIME::Parser; usage() unless scalar @ARGV == 3; my $pop = new Mail::POP3Client( HOST => $ARGV[0], USER => $ARGV[1], PASSWORD => $ARGV[2] ); my $tmp_directory = "/tmp"; my $parser = new MIME::Parser; $parser->output_dir($tmp_directory); $parser->output_prefix("attachment"); $parser->output_to_core(); my $entity = $parser->read(\*STDIN); for (my $i = 1; $i <= $pop->Count(); $i++){ foreach my $line ($pop->Head($i)){ if($line =~ /^(From):\s+/i){ print $line, "\n"; }elsif($line =~ /X-MS-Has-Attach: yes/i){ print "this email has a attachment\n\n"; } } } sub usage { print "Usage: $0 <mail_server> <username> <password>\n"; exit; }

Replies are listed 'Best First'.
Re: parse email attachment
by Mr. Muskrat (Canon) on Jan 09, 2003 at 23:40 UTC

    This is untested but based on some of my own code that parses attachments...

    use Mail::POP3Client; use MIME::Parser; usage() unless scalar @ARGV == 3; my $pop = new Mail::POP3Client( HOST => $ARGV[0], USER => $ARGV[1], PASSWORD => $ARGV[2] ); my $tmp_directory = "/tmp"; my $parser = new MIME::Parser; $parser->output_dir($tmp_directory); $parser->output_prefix("attachment"); $parser->output_to_core(); for (my $i = 1; $i <= $pop->Count(); $i++){ my $head = $pop->Head($i); if ($head =~ /X-MS-Has-Attach: yes/i){ my $msg = $pop->HeadAndBody($i); #$pop->Delete($i); # uncomment if you want to delete the message my $entity = $parser->parse_data($msg); } } $pop->Close(); sub usage { print "Usage: $0 <mail_server> <username> <password>\n"; exit; }
Re: parse email attachment
by arrow (Friar) on Jan 10, 2003 at 03:41 UTC
Re: parse email attachment
by oakbox (Chaplain) on Jan 10, 2003 at 07:54 UTC
    I wrote a compact little web mail program that uses POP3::Client and MIME::Parser. You may find a few hints (maybe even find some inspiration for how not to do it) in my code:
    http://www.oakbox.com/scripts/oakmailer.shtml

    Look in the "dump_ent" and "displayletters" subs.

    oakbox