1

このスクリプトを使用して、Gmailアカウントからすべてのメッセージを取得しています。

#!/usr/bin/perl

use Mail::POP3Client;
use IO::Socket::SSL;
no warnings;

my $username = 'username';
my $password = 'password';
my $mailhost = 'pop.gmail.com';
my $port = 995;

my $socket = IO::Socket::SSL->new(
                PeerAddr => 'pop.gmail.com',
                PeerPort => 995,
                Proto    => 'tcp',
            )
            or die "No socket!: $!\n";
my $pop = Mail::POP3Client->new();
$pop->User($username);
$pop->Pass($password);
$pop->Socket($socket);
$pop->Connect();

# me fijo cuantos hay
my $count = $pop->Count();
my $size = $pop->Size();

print "count[$count]\n";

Gmailアカウントには約1.500のメッセージがあります...しかし常に$pop->Count()は250以上を返します..決して1.500ではありません。

誰かがこれについて何か知っていますか?

前もって感謝します。

4

1 に答える 1

2

最後に、IMAPinsteとPOPを使用します。

#!/usr/bin/perl
use strict;
use warnings;
use Mail::IMAPClient;
use IO::Socket::SSL;

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(): $@";

my $cont = 1;
$client->select('INBOX');
my @mails = ($client->seen(),$client->unseen);
foreach my $id (@mails) {
    my $from = $client->get_header($id, 'From');
    if ($from =~ /([a-zA-Z\_\-\.0-9]+@[a-zA-Z\_\-0-9]+\.[0-9a-zA-Z\.\-\_]+)/) {
        my $email = lc $1;
        print "email[$email]\n";
    };
};

$client->logout();

これはうまくいきます。

于 2012-12-17T20:59:09.167 に答える