The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mail::Audit::Attach - Mail::Audit plugin for attachment handling.

SYNOPSIS

  use Mail::Audit qw(Attach);

  my $mail = Mail::Audit->new;

  # ...

  my $num_attachment = $mail->num_attachments;
  my $attachments = $mail->attachments;

  remove_attachments(filename => "\.(exe|scr|pif)",
                     smaller_than => 20000);

  $mail->remove_attachments(mime_type => "text/html");

  foreach (@$attachments) {
      $_->save($attachdir) 
          if ($_->mime_type =~ |^image/|);
      $_->remove 
          if ($_->filename =~ |\.(vcf)$|);
  }

  $mail->make_singlepart; # if possible

DEFINITION

For the purpose of this plugin, an attachment is a MIME part that has a filename. Files attached to non-MIME messages will not be discovered.

DESCRIPTION

This is a Mail::Audit plugin which provides easy access to files attached to mail messages. Besides Mail::Audit, it requires the MIME::Entity module.

METHODS IN MAIL::AUDIT

num_attachments

Returns the number of attachments found

attachments

Returns a reference to a list of attachment objects

remove_attachments

Removes attachments from the mail that match the criteria specified via the options, or all, if no options are specified. Currently, the following options (hash keys) are supported:

mime_type
file_name

Specify a regular expression; attachments whose MIME type or filename matches this expression are removed.

smaller_than
bigger_than

Specify file size limits; attachments smaller or bigger than these limits are removed.

An attachment must match all of the criteria to be removed. Returns the number of attachments removed.

ATTACHMENT PROPERTIES

The attachments are a subclass of MIME::Entity. Check out MIME::Entity to learn about useful methods like mime_type or bodyhandle that are inherited.

size

Returns the size of the attached file.

filename

Returns the original filename given in the MIME headers.

safe_filename

Returns the filename, with /\:;[]| and whitespace replaced by underscores, or 'attachment' if the original filename is empty.

ATTACHMENT ACTIONS

remove

Removes the attachment, ie. detaches the corresponding MIME entity and purges the body data.

save($location)

Saves the attachment as a file in $location. If $location is a directory (ie if -d $location), save uses safe_filename to store the file inside that directory, else $location is assumed to be a fully-qualified path with filename.

In both cases, save checks whether the target file exists and appends '.n' to the filename, with n being an integer that leads to a unique filename, if necessary.

Returns the filename used to save the file, or undef if an error ocurred (you might want to take a look at Mail::Audit::Attach::error in that case).

Note that the attachment is not removed.

ERROR FUNCTION

Mail::Audit::Attach::error will return an error message if an action failed (currently only set by save).

AUTHOR

Christian Renz <crenz@web42.com>

LICENSE

Copyright (C) 2002-2003 Christian Renz <crenz@web42.com>

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Mail::Audit. MIME::Entity.