Nachdem ich keine Lust hatte mich mit einem nervenden Fehler für das Script von dem Post: Neue Mails auf IMAP-Server per Perl anzeigen in ion3/screen rumzuschlagen, hatte ich das eigentlich Ad Acta gelegt.
Eigentlich, bis ein Kommentar Heute von Ollo von dem appelsche Rudel AppelPack kam, ich sollte doch unseen nehmen, das ginge schneller. Also unseen funktioniert leider nicht, ka warum. Aber es brachte mich dazu den Fehler auszumerzen, der von einem Tag auf den anderen eingetreten ist:
Can’t call method „login“ on an undefined value at /home/seraphyn/bin/imapchris line 8.
Es hat einen Moment gedauert um den Klopper dort hinauszubekommen, erst wollte ich es mit use Mail::IMAPClient; versuchen, aber dann fiel mir auf, dass es doch vielleicht toll wäre in ein „Söckchen“ zu schlüpfen und siehe da, es funktioniert wieder:
#!/usr/bin/perl -w use strict; use Net::IMAP::Simple::SSL; use IO::Socket::SSL; my $server = 'DEINSERVER'; my $user = 'DEINEMAILADRESSE'; my $pass = 'DEINPASSWORT'; my $imap = Net::IMAP::Simple::SSL->new($server); # Verbinde zu IMAP server via SSL, gib mir Söckchen my $socket = IO::Socket::SSL->new( PeerAddr => $server, ) or die "socket(): $@"; #Login $imap->login($user, $pass) || die "cannot connect"; my $messages = $imap->select('INBOX'); my $count = 0; #unseen do not work :( #Zähle bitte mal die neuen mails, bis Du welche hast, welche ich schon gelesen habe for my $msg (1..$messages) { $count++ unless $imap->seen($msg); } #Good-bye $imap->quit(); #Keine neue Mail gezählt gebe mir eine 0 in der statusbar an if ($count == 0) { print "Seraphyn: 0"; } # gibt es mehr neue Mails als 0(wie bitte?) dann gebe gezählte aus if ($count > 0) { print "Seraphyn: $count"; }
Zeile 5: DEINSERVER = mail.DEINEDOMAIN.TOPLEVELDOMAIN:PORT
Zeile 30 + 34 = s/Seraphyn/DEINAME/g
Das ganze wird dann in die Datei $HOME/.ion3/cfg_statusbar.lua per exec eingebunden:
exec = { sera={ program='/home/seraphyn/Dokumente/bin/imapseraphyn', retry_delay=6000*1000, }, UND SO WEITER UND SOFORT
In dem Abschnitt template= setzt man dann %exec_sera ein, bzw wenn nicht wie in Zeile 2 sera= genutzt wurde natürlich das Äquivalent. Ich gehe aber davon aus, wer ion3 nutzt, weiss was er tun muss;)
Und ich nutze den Pfad /home/seraphyn/Dokumente/bin/imapseraphyn weil dieses Partition verschlüsselt ist *HINT*