Extract Attachment from Mail

Les Mikesell lesmikesell at gmail.com
Fri Feb 16 21:40:47 UTC 2007


Cameron Simpson wrote:
> On 12Feb2007 07:27, Patrick Steiner <patrick.steiner at a1.net> wrote:
> | i fetch my mails via fetchmail and after that procmail sorts them into 
> | different mailbox-folders.
> 
> "mail" is its own plural, like "sheep" or "fish".
> 
> | how can i extract attachments and but them into a folder like 
> | ~/attachments? i tried mimeStrip.pl, but
> | i also get some non -base64 coded mails and the don't work with this 
> | tool :-(. any ideas who i can extract
> | this files?
> 
> I extract attachments using the metamail package (not available as a
> Fedora package as far as I can tell - had to build it from source; I can
> email you a tarball if you like).
> 
> I use a wrapper script to put the files somewhere
> useful:
> 
>   http://www.cskk.ezoshosting.com/cs/css/bin/mailunpack
> 
> That script relies on a bunch of other things from that script collection.
> You might just want to skip it for the metamail incantation.  If you want to
> take it as-is, it may be easiest to just grab the whole css package:
> 
>   http://www.cskk.ezoshosting.com/cs/css/
> 
> I normally run this script from mutt but it could easily be used from a
> procmail recipe.
> 
> Disclaimer: I wrote these scripts and thus am a bit biased.
> 

You can do it in a few lines of perl with the MIME::Parser package (from 
CPAN, I don't think it is rpm-packaged).  Something like this:


#Accept a mail message on stdin, split attachments into
# directory
use MIME::Parser;
### Create parser, and set some parsing options:
$archive='/path/for/attachments';
my $parser = new MIME::Parser;
### Change how nameless message-component files are named:
$parser->output_dir("$archive");
$parser->output_prefix('msg');
### Parse input:
$entity = $parser->parse(\*STDIN) or die "parse failed\n";
 


-- 
   Les Mikesell
    lesmikesell at gmail.com




More information about the fedora-list mailing list