携帯からメールを送ると twitter にツイートしてくれるアプリを作成する修行

携帯から twitter にツイートしたい。とりあえずツイートできればよくて、TL が見えなくても構わない。メールを送ったらその内容をツイートしてくれればいい。メールを送るだけならパケットも少なくて済むし。そういうアプリはすでにあるだろうが、自分専用のを作ってみたい。
ということで作ってみた。

use strict;
use warnings;
use Encode;
use FindBin;
my $base_dir = $FindBin::Bin;
my $config = do {
    use YAML::Tiny;
    my $c = YAML::Tiny->read("$base_dir/config.yaml");
    $c->[0];
};
my $tweet = do {
    use Email::MIME;
    my $src_text = decode('iso-2022-jp', do { local $/; <> });
    my $mail = Email::MIME->new($src_text);
    my $from = $mail->header('From');
    if (my ($addr) = $from =~ qr{<(.*)>}xms) {
        $from = $addr;
    }
    warn $from;     
    exit() if $from ne $config->{valid_email};
    $mail->body . ' [darezo]';
};
use Net::Twitter
my $nt = Net::Twitter->new(traits => ['API::REST', 'OAuth'],
                           consumer_key => $config->{consumer_key},
                           consumer_secret => $config->{consumer_key_secret},
                       );
$nt->access_token($config->{access_token});
$nt->access_token_secret($config->{access_token_secret});
$nt->update($tweet);
warn encode_utf8($tweet);
__END__

特定のアドレスからのメールしか受け付けないようにしている (valid_email)。これで私の携帯からしかこのアプリは使えない。

このスクリプトをメール受信のタイミングで呼び出さなければならない。まずは Plesk でメールアカウント (仮りに moge としておく) を作成。/var/qmailmailnames/mato.me/moge/.qmail に次の一行を追加する。

| /usr/bin/perl /home/takeyuki/darezo/darezo.pl

これで出先からも気軽にツイートできる。