I'm not sure if I can help you solve your problem ...
Update (further research): I noticed three things:
- As long as I use $parser->output_to_core(1); I don't get the path. Changing to $parser->output_under("/tmp"); does return a path.
- Your for $part(@parts){ }-loop runs one iteration too often, so your error message comes from the last call, where no parts are left.
- method 1: change $entity->bodyhandle->path; to $part->bodyhandle->path;.
The following code works fine for me:
use MIME::Parser;
split_entity($entity); # $entity is a MIME::Entity object
################################################
sub split_entity {
################################################
local $entity = shift;
my $num_parts = $entity->parts; # how many mime parts?
if ($num_parts) { # we have a multipart mime message
foreach (1..$num_parts) {
split_entity( $entity->parts($_ - 1) ); # recursive call
}
} else { # we have a single mime message/part
if ($entity->effective_type =~ /^text\/plain$/) { # text message
handle_text($entity->bodyhandle->as_string);
} else { # no text message
handle_other($entity->bodyhandle->path);
}
}
}
As you can see, I use path as you did and it is working perfectly.
I further recommend using a similar recursive call as some mailers seem to nest multipart messages and you maybe want to parse them correctly to any depth.
alex pleiner <alex@zeitform.de>
zeitform Internet Dienste
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|