Spring naar hoofdtekst

Alternatief voor AttachmentExtractor

Geplaatst op door ,
Laatste aanpassing op .

Inleiding

Al vele jaren maak ik dankbaar gebruik van Mozilla Thunderbird, een programma om e-mails mee op te halen, te lezen, versturen en beheren. Functionaliteit die niet standaard aan boord is, kan met behulp van zogenaamde add-ons worden toegevoegd. Zo gebruikte ik AttachmentExtractor voor het eenvoudig tegelijk opslaan van bijlagen uit meerdere berichten. Dat was heel flexibel, snel en comfortabel…

Totdat ik laatst mijn computer opnieuw installeerde, en ook Thunderbird vanuit het niets naar wens mocht configureren. De genoemde add-on bleek niet (meer) compatibel met nieuwere versies van Thunderbird! Ik ging op zoek naar een werkbaar alternatief maar vond, binnen de gebaande paden, geen oplossing.

Met Perl in de aanval

Met een zoekmachine in de hand, kom je tegenwoordig een heel eind. Ik kwam terecht bij een forum over UNIX en aanverwante artikelen. Een onbekende auteur had een Perl-script geschreven om e-mail bijlagen automatisch op te slaan. Zo onervaren als ik ben in Perl, kon ik toch zien, dat dit script veel méér deed dan alleen het opslaan van de bijlagen. Ook moest ik eerst nog een aantal benodigdheden installeren:

$ sudo apt install cpanminus 
$ sudo cpanm MIME::Parser

Stripshow

Het script verwacht een .eml-bestand op STDIN, dus selecteerde ik in Thunderbird een aantal berichten met bijlagen, drukte Ctrl + S en riep het script op de commandline aan:

$ extract-attachment.pl < mijn-email.eml

Ja, de bijlagen werden opgeslagen, maar ook de tekstuele inhoud van de berichten werd als HTML-bestand opgeslagen. Ik ging aan de slag om het script zo slank en schoon mogelijk te maken. Uiteindelijk bleef het volgende stukje code over, waarbij ik op eigen initiatief de hard gecodeerde $TMPDIR heb vervangen door de huidige map (cwd):

#!/usr/bin/perl

use MIME::Parser;
use Cwd qw(cwd);
my $dir = cwd;

sub main {
  my $parser = new MIME::Parser;
  $parser->output_dir($dir);
  $entity = $parser->read(\*STDIN);

  unlink<$dir/msg-*.txt>;
  unlink<$dir/msg-*.html>;
  1;
}

exit(&main ? 0 : -1);

Conclusie

Als bestaande programma's of uitbreidingen niet meer worden onderhouden en daardoor niet meer werken, gaan creatieve geesten altijd op zoek naar een werkbaar alternatief. Voor mij is dit slanke script, een eenvoudige wrapper om Perls MIME::Parser, ruim voldoende. Ik kan nu weer mijn dagelijkse mails met bijlagen geautomatiseerd verwerken.

Inhoudsopgave

Atom-feed Atom-feed van FWiePs weblog

Artikelen


Doorzoek de onderstaande categorieën om de lijst met artikelen te filteren.