加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

处理gmail邮件的Perl脚本(Ubuntu)

发布时间:2020-12-15 21:07:25 所属栏目:大数据 来源:网络整理
导读:首先需要安装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

首先需要安装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 passwordn";
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读