適当な思いつきで書くブログ

UbuntuやPerlやJavaScriptやVimやZshやShellScriptやMySQLと戯れている中で適当な思いつきでやってみたことを書いています。

Mail::IMAPClientで新規メールがあったらim.kayac.comに通知する

このあたり参照のこと。

IMAP的なメールービスで新着メールを受信したらim.kayac.com経由でiPhone通知したかったので書いた。

#!/usr/bin/env perl

use strict;
use warnings;

use HTTP::Request::Common;
use LWP::UserAgent;
use Mail::IMAPClient;

my $url = 'http://im.kayac.com/api/post/foo@example.com';
my $ua  = LWP::UserAgent->new;

my $imap = Mail::IMAPClient->new(
    Server   => 'xxx.xxxx.xxx',
    User     => 'username',
    Password => 'password',
);

if ( !$imap->select('INBOX') ) { 
    notify("Failed get message from INBOX.");
    exit 0;
}

my @msgs = $imap->search('NEW');
if ( !@msgs ) { 
    exit 0;
}

foreach my $msg (@msgs) {
    my $from = $imap->get_header( $msg, 'From' );
    $from =~ s/<(.+)>/$1/msx;

    notify("You gat a mail from $from.");
}

$imap->logout;

sub notify {
    my ($msg) = @_;

    $ua->request( POST $url, [ message => $msg ] );
}

ひさびさにPerl書いた。エラー処理が甘い...。