in reply to Re^2: Mail::Pop3Client - want to get consistent body text
in thread Mail::Pop3Client - want to get consistent body text

If you show us your code, it would really help us to help you. Note that you should pass to Email::MIME the whole message including headers (at least MIME headers) in order it could parse it. Also HTML messages are usually multipart, so you have to invoke parts() before body()

Replies are listed 'Best First'.
Re^4: Mail::Pop3Client - want to get consistent body text
by ksublondie (Friar) on May 19, 2009 at 22:29 UTC
    Here's what I have now for my code:
    for (my $i=1; $i<=$messages; $i++){ foreach($pop->Head($i)){ if($_=~/^From:[^<>]*\<(.*)\>/){ $emails[$i]->{'from'}=$1; } if($_=~/^Subject:(.*)/){ $emails[$i]->{'subject'}=$1; } } my $headAndBody=$pop->HeadAndBody($i); my $email=Email::MIME->new($headAndBody); my @parts=$email->parts(); my $body=$email->body(); print $body."\n\n"; $emails[$i]->{'body'}=$body; }

      No, you should call body for each part separately, like this (not tested!):

      my $email=Email::MIME->new($headAndBody); my @parts = $email->parts(); print $_->body(), "\n" for @parts;

      Note that each part may be multipart, so you should check this.

        Beautiful! That worked. Thanks!