インストール
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 () {
$smtp->datasend($text);
# print $text;
}
$smtp->dataend();
$smtp->quit;
close(FILE);
Gmail からメールを受信する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 件のコメント:
コメントを投稿