スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Raspberry Pi PerlでGmail受信

前にも書きましたが、Perlという言語を使用するのは初めてと言っていいほどなので、ググって試す、ググって試すの繰り返しです。

Gmailのメール送受信の仕様はヘルプに書かれています。

 POPサーバ:pop.gmail.com
  ポート: 995(SSL)
 SMTPサーバ:smtp.gmail.com
  ポート:587(TLS/STARTTLS)
  ポート:465(SSL)

つまり、Gmailのサーバからメールを受信するにはPOPを使い、SSL認証が必要との事です。SSLというのは暗号化の一種だと思っていましたが、デジタル証明書の役割も含まれるのですね。ま~、言い方の違いなのかもしれませんが。これはサーバ側の仕様なので、Perlで通信する時も例外ではなく、これに従わないといけないです。

SSL対応ということで、Mail::POP3Clientモジュールを使う事にしました。当初は、SSLの事は全く念頭に無かったので、Net::POP3 に Net::POP3::SSLWrapper を付けたりしていたのですが、受信出来たファイルを誤って消してしまった事を切っ掛けに、もともとSSL対応のMail::POP3Clientへ乗り換えました。

perlのモジュールのインストールには最初以下のコマンドを使用していました。

$ perl -MCAPAN -e shell
cpan[1]> install Net::POP3::SSLWrapper

この方法だと、ネット上の何処かから該当モジュールのソースコードを拾ってきてコンパイルする。といったことを自動で行ってくれるみたいです。ただ、関連するモジュールをインストールしていなかったりするとコンパイルエラーになり、何回もモジュールを拾ってきてはコンパイル……を繰り返す事となります。これは手間がかかるな~、と思っていた所、apt-get で同様のモジュールを取得出来る事に気がつきました。たまたま、apt-cache を試したらヒットしたんですよね。なので、以下のパッケージをインストールしました。ひょっとするとlibmail-pop3client-perlをインストールするだけでその他のモジュールは関連づけられて一緒にインストール出来るのかもしれません。

$ sudo apt-get install libio-socket-ssl-perl
$ sudo apt-get install libnet-ssleay-perl
$ sudo apt-get install libmail-pop3client-perl

spewnさんのコードをほぼそのまま使い、以下のコードにしたところ、Gmailからの受信に成功しました!!

mail_recv.pl
#!/usr/bin/perl

use Mail::POP3Client;
use IO::Socket::SSL;
use CGI qw(:standard);
$cgi = new CGI;

$username = 'xxxxx@gmail.com';
$password = 'aaaaaaaa';

$mailhost = 'pop.gmail.com';
$port = '995';

print $cgi->header();

$pop = new Mail::POP3Client(
USER => $username,
PASSWORD => $password,
HOST => $mailhost,
PORT => $port,
USESSL => 'true',
DEBUG => 0,
);

if (($pop->Count()) < 1) {
print "No messages...\n";
$pops->Close();
exit;
}

print $pop->Count() . " messages found!\n";

for($i = 1; $i <= $pop->Count(); $i++) {
foreach($pop->Head($i)) {
/^(From|Subject|Email):\s+/i && print $_, "\n";
}
print "\nMessage: " . $pop->Body($i) . "\n";

$pop->Delete($i);
}

$pop->Close();

exit;

スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。