man Email::MIME::Modifier () - Modify Email::MIME Objects Easily

NAME

Email::MIME::Modifier - Modify Email::MIME Objects Easily

SYNOPSIS

  use Email::MIME::Modifier;
  my $email = Email::MIME->new( join "", <> );

  remove_attachments($email);

  sub remove_attachments {
      my $email = shift;
      my @keep;
      foreach my $part ( $email->parts ) {
          push @keep, $part
            unless $part->header('Content-Disposition') =~ /^attachment/;
          remove_attachments($part)
            if $part->content_type =~ /^(?:multipart|message)/;
      }
      $email->parts_set( \@keep );
  }

DESCRIPTION

Provides a number of useful methods for manipulating MIME messages.

These method are declared in the CWEmail::MIME namespace, and are used with CWEmail::MIME objects.

Methods

content_type_set
  $email->content_type_set( 'text/html' );
Change the content type. All CWContent-Type header attributes will remain in tact.
charset_set
name_set
format_set
boundary_set
  $email->charset_set( 'utf8' );
  $email->name_set( 'some_filename.txt' );
  $email->format_set( 'flowed' );
  $email->boundary_set( undef ); # remove the boundary
These four methods modify common CWContent-Type attributes. If set to CWundef, the attribute is removed. All other CWContent-Type header information is preserved when modifying an attribute.
encoding_set
  $email->encoding_set( 'base64' );
  $email->encoding_set( 'quoted-printable' );
  $email->encoding_set( '8bit' );
Convert the message body and alter the CWContent-Transfer-Encoding header using this method. Your message body, the output of the CWbody() method, will remain the same. The raw body, output with the CWbody_raw() method, will be changed to reflect the new encoding.
body_set
  $email->body_set( $unencoded_body_string );
This method will encode the new body you send using the encoding specified in the CWContent-Transfer-Encoding header, then set the body to the new encoded body. This method overrides the default CWbody_set() method.
disposition_set
  $email->disposition_set( 'attachment' );
Alter the CWContent-Disposition of a message. All header attributes will remain in tact.
filename_set
  $email->filename_set( 'boo.pdf' );
Sets the filename attribute in the CWContent-Disposition header. All other header information is preserved when setting this attribute.
parts_set
  $email->parts_set( \@new_parts );
Replaces the parts for an object. Accepts a reference to a list of CWEmail::MIME objects, representing the new parts. If this message was originally a single part, the CWContent-Type header will be changed to CWmultipart/mixed, and given a new boundary attribute.
parts_add
  $email->parts_add( \@more_parts );
Adds MIME parts onto the current MIME part. This is a simple extension of CWparts_set to make our lives easier. It accepts an array reference of additional parts.
walk_parts
  $email->walk_parts(sub {
      my $part = @_;
      return if $part->parts > 1; # multipart
      if ( $part->content_type =~ m[text/html] ) {
          my $body = $part->body;
          $body =~ s/<link [^>]+>//; # simple filter example
          $part->body_set( $body );
      }
  });
Walks through all the MIME parts in a message and applies a callback to each. Accepts a code reference as its only argument. The code reference will be passed a single argument, the current MIME part within the top-level MIME object. All changes will be applied in place.

SEE ALSO

Email::Simple, Email::MIME, Email::MIME::Encodings, Email::MIME::ContentType, perl.

AUTHOR

Casey West, <casey@geeknest.com>.

COPYRIGHT

  Copyright (c) 2004 Casey West.  All rights reserved.
  This module is free software; you can redistribute it and/or modify it
  under the same terms as Perl itself.