Heute gibts hier was für Masochisten (oder Sadisten, je nachdem). Mit diesem kleinen Perl-Script könnt ihr die Betreffzeilen von Mails in einem bestimmten Ordner vorlesen lassen. Ich habs hier mit meinem Spam-Ordner getestet 😉

Das Script benötigt die Perl-Module Net::IMAP::Simple und Email::Simple und außerdem eine funktionierende Installation von espeak (Ich habs mit Ubuntu 10.10 Maverick getestet).

Vor dem Ausführen die Variablen oben eurem Server entsprechend einstellen und los gehts.

#!/usr/bin/perl
 
use strict;
use warnings;
use Net::IMAP::Simple;
use Email::Simple;
 
my $server = "mail.domain.de";
my $user = "username";
my $pass = "passwort";
my $folder = "INBOX/Junk";
 
my $espeak_params = "-s 160";
 
# open a connection to the IMAP server
my $imap = Net::IMAP::Simple->new($server) || die "Unable to connect to IMAP: $Net::IMAP::Simple::errstr\n";
 
# login
if(!$imap->login($user, $pass)) {
   print STDERR $imap->errstr . "\n";
   exit(64);
}
 
# select the SPAM-folder
my $nm = $imap->select($folder);
 
for(my $i = 1; $i <= $nm; $i++){
  my $es = Email::Simple->new(join '', @{ $imap->top($i) } );
  if($imap->seen($i)){
    # already read mail
    print "*";
  } else {
    # new mail
    print " ";
    # uncomment this to only read new mail
    #my @args = ("espeak", $espeak_param,  "\"" . $es->header('Subject') . "\"");
    #system(@args) || die("system @args failed: $?");
  }
  # print the mailnumber and subject
  printf("[%03d] %s\n", $i, $es->header('Subject'));
 
  # comment this out, when you've enabled the read of unread mails only above
  my @args = ("espeak", $espeak_params,  "\"" . $es->header('Subject') . "\"");
  system(@args) || die("system @args failed: $?");
}
 
$imap->quit;

Dieses Script als Cronjob eingetragen.. Oder ihr startet es auf einen großen Folder und geht schnell in den Feierabend…

Ein klein wenig umgeschrieben wirds auch wieder sinnvoll, etwa indem man sich den Betreff neuer Mails aus dem normalen Posteingang vorlesen läßt.

Diesen und weitere Artikel findet ihr in meinem Wiki