[Inhalt] -> [MIME] |
[info] |
||
Email-Header enthalten Informationen über Absender und Empänger einer Email und verschiedene zusätzliche Informationen für unterschiedliche Zwecke (siehe RFC 2076). Um an diese Informationen zu gelangen, reicht ein schlichter Parser. Die MIME-tools bieten mit den Modulen MIME::Parser, MIME::Body, MIME::Head, MIME::Entity u.a. ebenfalls ein komfortables Interface, um an diese Informationen zu gelangen.
use MIME::Parser; my $message = "...."; # get your email somehow my $parser = new MIME::Parser; # MIME::Parser object $parser->output_under("/some/dir"); # where to save the MIME parts my $entity = $parser->parse_data($message); # MIME::Entity object # my $entity = $parser->parse(\*STDIN); # read from STDIN # my $entity = $parser->parse_open("/some/file"); # read from STDIN # get header fields (examples) my $from = $entity->head->decode->get("From"); my $to = $entity->head->decode->get("To");
Mit den MIME-tools können auch verschachtelte MIME-Nachrichten ausgelesen werden.
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->path, $entity->bodyhandle->as_string); } else { # no text message handle_other($entity->bodyhandle->path); } } }
Mit den MIME-tools lassen sich MIME-Nachrichten generieren.
use MIME::Parser; # use MIME::Entity; # if you don't need the parser # generate mail my $mail = MIME::Entity->build( From => $from, To => $to, Subject => $subject, Encoding => 'quoted-printable', "Content-Type" => 'text/plain; charset="iso-8859-1"', Date => $today, Data => $mailtext ); # attach files foreach (@file_list) { $mail->attach( Path => $_, Type => $content_type, Encoding => "base64" ); } # covert to string my $mail_as_string = $mail->as_string;
Zusammengestellt von Alex Pleiner
© 2001-2003 zeitform Internet Dienste Bei Problemen wenden Sie sich bitte an den Webmaster
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1.