-use|rname: User name to log in with (Default: $USER)
-p|assword: Password to use (Default: prompted)
-i|map: IMAP server to talk to (Default: defaria.com)
- -s|leep: Number of minutes to sleep inbetween checking mail (Default: 5)
+ -s|leep: Number of minutes to sleep inbetween checking mail (Default: 1)
=head1 DESCRIPTION
use lib "$FindBin::Bin/../lib";
use Display;
+use Logger;
use Utils;
my $defaultIMAPServer = 'defaria.com';
-my $defaultSleeptime = 5;
+my $defaultSleeptime = 1;
my $IMAP;
my %unseen;
+my $log;
my %opts = (
usage => sub { pod2usage },
debug => sub { set_debug },
daemon => 1,
username => $ENV{USER},
+ password => $ENV{PASSWORD},
imap => $defaultIMAPServer,
sleep => $defaultSleeptime,
);
} # unseenMsgs
sub Connect2IMAP() {
- verbose "Connecting to $opts{imap} as $opts{username}";
+ $log->msg("Connecting to $opts{imap} as $opts{username}");
$IMAP = Net::IMAP::Simple->new($opts{imap}) ||
error("Unable to connect to IMAP server $opts{imap}: " . $Net::IMAP::Simple::errstr, 1);
- verbose "Connected";
+ $log->msg("Connected");
- verbose "Logging onto $opts{imap} as $opts{username}";
+ $log->msg("Logging onto $opts{imap} as $opts{username}");
unless ($IMAP->login($opts{username}, $opts{password})) {
- error("Login to $opts{imap} as $opts{username} failed: " . $IMAP->errstr, 1);
+ $log->err("Login to $opts{imap} as $opts{username} failed: " . $IMAP->errstr, 1);
} # unless
- verbose "Logged on";
+ $log->msg("Logged on");
# Focus on INBOX only
$IMAP->select('INBOX');
} # Connect2IMAP
sub MonitorMail() {
- verbose "Monitoring email";
+ $log->msg("Monitoring email");
while () {
- verbose "Looking for unread messages";
# First close and reselect the INBOX to get its current status
$IMAP->close;
$IMAP->select('INBOX');
} # if
# Now speak it!
+ my $logmsg = "From $from $subject";
my $msg = "Message from $from... " . quotemeta $subject;
$msg =~ s/\"/\\"/g;
- verbose "Announcing $msg";
+ if (get_verbose) {
+ $log->msg($logmsg);
+ } else {
+ $log->log($logmsg);
+ } # if
- Execute "/usr/local/bin/gt \"$msg\"";
+ my $cmd = "/usr/local/bin/gt \"$msg\"";
+
+ my ($status, @output) = Execute $cmd;
+
+ if ($status) {
+ $log->err("Unable to execute $cmd" . join("\n", @output));
+ } # if
$unseen{$_} = 1;
} # for
} # MonitorMail
END {
- $IMAP->quit;
+ $IMAP->quit if $IMAP;
} # END
## Main
EnterDaemonMode if $opts{daemon};
+$log = Logger->new(
+ path => '/var/log',
+ timestamped => 'yes',
+ append => 'yes',
+);
+
Connect2IMAP;
MonitorMail;