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 <[email protected]>

LICENSE
   Copyright (C) 2002-2003 Christian Renz <[email protected]>

   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.