インストール
ppm> install Mail-POP3Client使い方
use strict; use utf8; use Mail::POP3Client; # pop3 my $server = 'localhost'; my $username = 'user'; my $password = 'pass'; my $pop = new Mail::POP3Client(USER => $username, PASSWORD => $password, HOST => $server, DEBUG => 0); print "Success to connect $server.\n"; if ($pop->Count() < 1) { print "No message\n"; $pop->Close(); exit; } print $pop->Count() . " messages\n"; my ($head, $body, $subject, $i); for ($i = 1; $i <= $pop->Count(); $i++) { foreach $head ($pop->Head($i)) { print $head . "\n"; } foreach $body ($pop->Body($i)) { print $body . "\n"; } # 受信メールをサーバから削除 $pop->Delete($i); } # log off $pop->Close();MIME::Entity
インストール
ppm> install MIME-EntityNet::SMTP
使い方
use strict; use utf8; use Net::SMTP; use MIME::Entity; my ($smtp, $mime, $subject, $body, $from, $to); $from = 'csrcdev0'; $to = 'csrcdev0'; $subject = "Test mail"; $body = "Hello, This is test mail."; $smtp = Net::SMTP->new('localhost'); $smtp->mail($from); $smtp->to($to); $smtp->data(); $mime = MIME::Entity->build(From => $from, To => $to, Subject => $subject, Type => 'text/plain; charset="utf-8"', Data => $body, Encoding => '7bit'); $smtp->datasend($mime->stringify); $smtp->dataend(); $smtp->quit; # 事前に作成したメールファイルを送信する my ($text); $smtp = Net::SMTP->new('localhost'); $smtp->mail($from); $smtp->to($to); open(FILE, "test.mail"); $smtp->data(); foreach $text (Gmail からメールを受信する) { $smtp->datasend($text); # print $text; } $smtp->dataend(); $smtp->quit; close(FILE);
Mail::POP3Client の SSL モードを使用して受信する
use strict; use Mail::POP3Client; # pop3s my $server = 'pop.gmail.com'; my $username = 'your account'; my $password = 'your password'; my $port = '995'; my $pops = new Mail::POP3Client( USER => $username, PASSWORD => $password, HOST => $server, PORT => $port, USESSL => 'true', DEBUG => 0); print "Success to connect $server.\n"; if ($pops->Count() < 1) { print "No message\n"; $pops->Close(); exit; } print $pops->Count(), " messages\n"; # log off $pops->Close();受信したメールを MIME decode して表示する
Encode モジュールでメールヘッダ部は decode('MIME-Header', ...) を使用し、メール本文は decode('iso-2022-jp', ...) を使うことで decode できる。
use utf8; use Encode; binmode STDOUT, ":encoding(shift-jis)"; my $head, my $body, my $subject; for (my $i = 1; $i <= $pops->Count(); $i++) { foreach $head ($pops->Head($i)) { if ($head =~ /^(Subject):\s/) { $subject = $head; $subject = decode('MIME-Header', $subject); print $subject . "\n"; } print "[$i]" . $head . "\n"; } print "----------------------------\n"; foreach $body ($pops->Body($i)) { $body = decode('iso-2022-jp', $body); print $body . "\n"; } print "============================\n"; }受信メールをファイルに保存する
Mail::POP3Client のファイル書き出し機能を使用して受信メールをローカルファイルに保存する。
use Mail::POP3Client; my $filename = $ARGV[0]; for (my $i = 1; $i <= $pops->Count(); $i++) { my $fh = IO::File->new(); $fh->open("$filename", "w"); $pops->HeadAndBodyToFile($fh, $i); $fh->close(); }メールフォーマットの日時表記を変換する
DateTime::Format::Mail モジュールを使用してメールヘッダの日時フォーマットを好みの形に変換する。
use strict; use DateTime::Format::Mail; my $datetime = DateTime::Format::Mail->parse_datetime("Sun, 29 Mar 2009 13:08:44 +0900"); print $datetime->ymd('.') . "\n"; print $datetime->ymd('') . '-' . $datetime->hms('') . "\n";
0 件のコメント:
コメントを投稿