您的位置:首页 > 大数据 > 人工智能

处理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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: