in reply to Re: Email::MIME Distinguishing HTML msg from HTML attachment
in thread Email::MIME Distinguishing HTML msg from HTML attachment

Thanks zwon. Here is code to get html alternative if it is available, text otherwise, in case anyone can use it.

Steve

use Mail::POP3Client; use Email::MIME; my $pop = new Mail::POP3Client( USER => 'user@mail.com, PASSWORD => 'foobar', AUTH_MODE => 'PASS', HOST => "mail.com" ); for( my $i = 1; $i <= $pop->Count(); $i++ ) { my $message = $pop->HeadAndBody($i); my $parsed = Email::MIME->new($message); my ($body,$type) = getbody($parsed); # do something with body } sub getbody { my $parsedmessage = shift; my $body; my $bodytype; my @parts = $parsedmessage->parts; if ($messagetype =~ /^multipart\/alternative/) { # it's a plain alternative so get the html body in the second +part $body = $parts[1]->body; $bodytype = 'html'; } elsif ($messagetype =~ /^multipart\/[mixed|related]/) { # it's an alternative or related so check the first part my $subtype = $parts[0]->content_type; if ($subtype =~ /^multipart\/alternative/) { # it's an alternative with attachments so get the body fro +m the # second subpart of the first part my @subparts = $parts[0]->parts; $body = $subparts[1]->body; $bodytype = 'html'; } else { # otherwise it's plain text with an attachment so get the +body # from the first part $body = $parts[0]->body; $bodytype = 'text'; } } else { # it's plain text with no attachments so get the body # from the first part $body = $parts[0]->body; $bodytype = 'text'; } return ($body,$bodytype); }