处理gmail邮件的Perl脚本(Ubuntu)
2012-08-10 22:11
381 查看
首先需要安装imap
apt-get install libmail-imapclient-perl
然后利用下面的脚本来搜索gmail的内容
#!/usr/bin/perl
# gmail-extract.pl - perl script for extraction of email addresses from GMail account
use strict;
use Mail::IMAPClient; # apt-get install libmail-imapclient-perl
use IO::Socket::SSL;
use Date::Parse;
use Getopt::Std;
sub usage {
print STDOUT "usage:\n";
print STDOUT " ./gmail-extract.pl -u user\@gmail.com -p password\n";
print STDOUT " Optional arguments:\n";
print STDOUT " -l label (parse messages with GMail label 'label' only)\n";
print STDOUT " -f date_from (parse messages after 'date_from' date only)\n";
print STDOUT " -t date_to (parse messages before 'date_to' date only)\n";
exit;
}
my %opts;
getopt('uplft', \%opts);
my $username = $opts{'u'} or usage();
my $password = $opts{'p'} or usage();
my $label = $opts{'l'}||'INBOX';
my $date_from = str2time($opts{'f'})||0;
my $date_to = str2time($opts{'t'})||time();
my $socket = IO::Socket::SSL->new(
PeerAddr => 'imap.gmail.com',
PeerPort => 993,
)
or die "socket(): $@";
my $client = Mail::IMAPClient->new(
Socket => $socket,
User => $username,
Password => $password,
)
or die "new(): $@";
if ($client->IsAuthenticated()) {
my $msgs = {};
my $emails = {};
$client->select($label);
$client->fetch_hash("RFC822.HEADER", $msgs) or die "Fetch hash error: ", $client->LastError, "\n";
foreach my $m (keys %$msgs) {
$msgs->{$m}{"RFC822.HEADER"} =~ /Date: (.*)\n/;
my $date = str2time($1);
$msgs->{$m}{"RFC822.HEADER"} =~ /Subject: (.*)\n/;
my $from = $1;
if ($from =~ /.*<(.*)>/) { $from = $1; }
$emails->{$from} = $date;
};
foreach my $e (keys %$emails) {
if ($date_from < $emails->{$e} && $emails->{$e} < $date_to) { print STDOUT $e, "\n"; }
};
}
$client->logout();
调用方法:
./gmail-extract.pl -u myaccount@gmail.com -p mypasswd -f 2012-1-1 -t 2012-8-1
apt-get install libmail-imapclient-perl
然后利用下面的脚本来搜索gmail的内容
#!/usr/bin/perl
# gmail-extract.pl - perl script for extraction of email addresses from GMail account
use strict;
use Mail::IMAPClient; # apt-get install libmail-imapclient-perl
use IO::Socket::SSL;
use Date::Parse;
use Getopt::Std;
sub usage {
print STDOUT "usage:\n";
print STDOUT " ./gmail-extract.pl -u user\@gmail.com -p password\n";
print STDOUT " Optional arguments:\n";
print STDOUT " -l label (parse messages with GMail label 'label' only)\n";
print STDOUT " -f date_from (parse messages after 'date_from' date only)\n";
print STDOUT " -t date_to (parse messages before 'date_to' date only)\n";
exit;
}
my %opts;
getopt('uplft', \%opts);
my $username = $opts{'u'} or usage();
my $password = $opts{'p'} or usage();
my $label = $opts{'l'}||'INBOX';
my $date_from = str2time($opts{'f'})||0;
my $date_to = str2time($opts{'t'})||time();
my $socket = IO::Socket::SSL->new(
PeerAddr => 'imap.gmail.com',
PeerPort => 993,
)
or die "socket(): $@";
my $client = Mail::IMAPClient->new(
Socket => $socket,
User => $username,
Password => $password,
)
or die "new(): $@";
if ($client->IsAuthenticated()) {
my $msgs = {};
my $emails = {};
$client->select($label);
$client->fetch_hash("RFC822.HEADER", $msgs) or die "Fetch hash error: ", $client->LastError, "\n";
foreach my $m (keys %$msgs) {
$msgs->{$m}{"RFC822.HEADER"} =~ /Date: (.*)\n/;
my $date = str2time($1);
$msgs->{$m}{"RFC822.HEADER"} =~ /Subject: (.*)\n/;
my $from = $1;
if ($from =~ /.*<(.*)>/) { $from = $1; }
$emails->{$from} = $date;
};
foreach my $e (keys %$emails) {
if ($date_from < $emails->{$e} && $emails->{$e} < $date_to) { print STDOUT $e, "\n"; }
};
}
$client->logout();
调用方法:
./gmail-extract.pl -u myaccount@gmail.com -p mypasswd -f 2012-1-1 -t 2012-8-1
相关文章推荐
- mysql主从监控脚本含自动配置发Gmail邮件客户端
- POP接收GMail邮件的内容,便于处理收邮件的程序
- mysql主从监控脚本含自动配置发Gmail邮件客户端
- Ubuntu配置Evolution收发Gmail邮件
- 使用脚本下载Gmail邮件附件
- Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件
- Ubuntu下配置用msmtp发送gmail邮件
- 自动过滤邮箱日志,并发送邮件给邮箱脚本,perl+shell
- 通过smtp验证发送邮件的perl脚本
- Ubuntu配置Evolution收发Gmail邮件
- Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件
- Gmail新版截图曝光:更整洁的界面设计,让用户更高效的处理邮件 ...
- ubuntu下开机自动运行脚本以及定时任务的处理
- 使用gmail发送邮件的Python脚本
- ubuntu14.04安装mutt邮件处理软件
- Ubuntu配置Evolution收发Gmail邮件
- PHPMailer IIS下的PHP脚本使用GMAIL发送邮件
- 让 Gmail 成为 GNOME(ubuntu) 默认邮件客户端
- ubuntu下开机自动运行脚本以及定时任务的处理
- perl利用SMTP发送邮件脚本(带认证)