Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: Modifying MIME messages with MIME-Tools

by skazat (Chaplain)
on Nov 09, 2004 at 22:13 UTC ( [id://406538]=note: print w/replies, xml ) Need Help??


in reply to Re: Modifying MIME messages with MIME-Tools
in thread Modifying MIME messages with MIME-Tools

OK!

Here's my Proof of Concept to edit specific MIME types in a MIME Message. This example will only tweak parts that are in text/plain. How to exactly edit the mime part was graciously given by rob_au, all that had to after that was to create a recursive subroutine that would then reconstruct everything tweaked!

#!/usr/bin/perl -w use strict; use MIME::Parser; use MIME::Entity; my $parser = new MIME::Parser; $parser->output_to_core(1); #so here's our test MIME thingy: my $test = MIME::Entity->build(Type => "multipart/alternative", From => 'me@myhost.com', To => 'you@yourhost.com', Subject => "Test Test Test"); $test->attach(Type => "text/plain", Data => "This is the plain text stuff" ); $test->attach(Type => "text/html", Data => "<h1>This is the HTML stuff</h1>" ); # Let's print the, "Before" print $test->as_string(); $test = tweak_plain_text($test); print "\n\nAnd After...\n\n\n"; print $test->as_string(); sub tweak_plain_text { my $entity = shift; my @parts = $entity->parts; if(@parts){ my $i; foreach $i (0 .. $#parts) { $parts[$i]= tweak_plain_text($parts[$i]); } $entity->sync_headers('Length' => 'COMPUTE', 'Nonstandard' => 'ERASE'); }else{ if($entity->head->mime_type eq 'text/plain'){ my $body = $entity->bodyhandle; my $content = $body->as_string; $content .= "\nThis has been tweaked!!!!\n"; my $io = $body->open('w'); $io->print( $content ); $io->close; $entity->sync_headers('Length' => 'COMPUTE', 'Nonstandard' => 'ERASE'); } return $entity; } my $content = $entity->as_string; return $entity; }

Thanks everyone for the help!

 

-justin simoni
!skazat!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://406538]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-04-19 00:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found