#!/usr/local/bin/perl # pop3_to_twitter.pl # # Copyright(C) Since 2006 Akira KAKINOHANA All Rights Reserved # Author : Akira KAKINOHANA <kira@kirameister.net> # Distributed at : http://softwares.kirameister.net/ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # For GNU General Public License, see <http://www.gnu.org/licenses/>. use Net::POP3; use Net::Twitter; use utf8; use Encode; use Encode::Guess qw/iso-2022-jp/; ## should work with most of the Japanese-coded emails.. ### # POP3 to Twitter # Written by : Akira K. # Version : 0.1 # Description : This script allows you to update your twitter status by sending # an email to an email address you specify. # This script must be called regularly (e.g., by cron daemon) in order to check # if there's a new email on your POP3 mail box. ### ## Email Server and account settings.. my $mailserver = 'YOUR_BASE_SERVER.com'; my $mailaccount = 'YOUR_BASE_ACCOUNT'; my $mailpassword = 'YOUR_BASE_PASSWORD'; ## Twitter account settings.. my $twitter_username = "Your_Twitter_Account"; my $twitter_password = "Your_Twitter_Password"; ## Cell Phone Email address setting.. my $cell_phone_address = "YOUR\@Cell_Phone_Address.com"; ## initializing.. my $pop = Net::POP3->new($mailserver, Timeout => 60); my $twit = Net::Twitter->new( username=>$twitter_username, password=>$twitter_password ); if ($pop->login($mailaccount, $mailpassword) > 0) { my $msgnums = $pop->list; # hashref of msgnum => size LOOP: foreach my $msgnum (keys %$msgnums) { my $msg = $pop->get($msgnum); $pop->delete($msgnum); ## message will be deleted in any case foreach my $line (@$msg){ next LOOP if ($line =~ /^$/); ## go to next message if it's reached to the text.. if ($line =~ /From:.*$cell_phone_address/){ ## From check done.. until ($line =~ /^$/){ $line = shift(@$msg); chomp($line); } ## the pointer is at the beggining of text my $msgtext = ""; while($line = shift(@$msg)){ chomp($line); $msgtext .= $line; } my $enc = guess_encoding ( $msgtext ); if ( ref $enc ) { $msgtext = decode ( $enc->name , $msgtext ); } $msgtext = encode("utf8", $msgtext); my $result = $twit->update($msgtext); #print "Message : $msgtext\n"; } } } } $pop->quit; __END__