すごく簡単なメール通知機能を書いた。
Ubuntuでなんかいいのないかなって思ったんだけど、いいのが
見つけられなかったのでとりあえず自作で。通知には notify-sendを
使いました。
#!/usr/bin/env perl use strict; use warnings; use AnyEvent; use Config::Pit; use Net::IMAP::Client; use Getopt::Long; use Encode; use utf8; use File::Which qw(which); unless(which('notify-send')) { die "Please install notify-send\n"; } GetOptions( "no-ssl" => \my $no_ssl, "port|p=i" => \my $port, ); my $ssl = defined $no_ssl ? 0 : 1; $port = defined $port ? $port : 993; my $mail_server = shift or die "Usage $0 [--no-ssl] [--port=port_num] mail_server\n"; my $config = pit_get($mail_server, require => { user => "user account name", pass => "password at mail server", }); my $imap = Net::IMAP::Client->new( server => $mail_server, user => $config->{user}, pass => $config->{pass}, ssl => $ssl, port => $port, ) or die "Can't create IMAP object\n"; $imap->login or die "Can't login $mail_server\n"; my $condvar = AnyEvent->condvar; my $icon = '/usr/share/pixmaps/thunderbird.png'; my $w = AnyEvent->timer( after => 0, interval => 180, cb => sub { my $status = $imap->status("INBOX"); unless($status) { $imap->logout; $condvar->send; } my @command = ('notify-send', "--icon=$icon", encode_utf8("$mail_server"), encode_utf8("未読メール数: " . $status->{UNSEEN})); system(@command); }, ); $condvar->recv; die "Error is occur\n";
使い方
% perl mail_notifier.pl mail_server
3分に一回ポップアップで未読メール数を教えてくれます。
使い方は
% perl mail_notifier.pl imap.googlemail.com
みたいな感じです。GMailでは動作することが確認できました。
イメージはこんな感じ。
やるならもうちょいおしゃれにしたいので、
もう少し凝ってみようかな。