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書いた。エラー処理が甘い...。