Как пройти аутентификацию в Gmail с помощью Perl? - PullRequest
3 голосов
/ 02 марта 2010

Я установил этот модуль для получения доступа и контроля в папке входящих сообщений Gmail. Однако, когда я пытаюсь подключиться через небольшой Perl-скрипт и проверить работоспособность, я получаю это сообщение об ошибке.

Error: Could not login with those credentials - could not find final URL
  Additionally, HTTP error: 200 OK

Это ошибка, встроенная в модуль Gmail.pm.

Я могу пропинговать рассматриваемый URL (https://www.google.com/accounts/ServiceLoginBoxAuth), поэтому я чувствую, что проблема не в том, чтобы найти URL. Кроме того, я знаю, что учетные данные верны и работают с этим URL, потому что я пробовал их вручную.

Я использую этот скрипт для тестирования. Я предоставил свои полномочия в соответствующих местах.


Я также установил этот модуль с тем же типом ошибки.

Есть идеи, почему меня блокируют?

Ответы [ 5 ]

12 голосов
/ 02 марта 2010

Используйте Mail :: IMAPClient , как показано ниже. Чтобы пройти SSL-аутентификацию через Mail :: IMAPClient, вы должны установить IO :: Socket :: SSL из Net :: SSLeay. Если это так, это работает как шарм.

#!/usr/bin/env perl
use strict; use warnings;
use Mail::IMAPClient;

# Connect to IMAP server
my $client = Mail::IMAPClient->new(
  Server   => 'imap.gmail.com',
  User     => 'yourusername',
  Password => 'yourp4a55w0r&',
  Port     => 993,
  Ssl      =>  1,
  )
  or die "Cannot connect through IMAPClient: $!";

# List folders on remote server (see if all is ok)
if ( $client->IsAuthenticated() ) {
  print "Folders:\n";
  print "- ", $_, "\n" for @{ $client->folders() };  
};

# Say so long
$client->logout();
2 голосов
/ 02 марта 2010

Если вы не можете получить доступ к Gmail через обычный POP3 или IMAP, то у вас проблема с конфигурацией, а не проблема программирования.

Я получаю свою почту из gmail (фактически Google Apps, которая использует тот же интерфейс), используя подробности конфигурации, описанные здесь: http://download.gna.org/hpr/fetchmail/FAQ/gmail-pop-howto.html

(Этот ответ гораздо более уместен для Супер пользователя , хотя!)

2 голосов
/ 02 марта 2010

Я успешно получаю доступ к учетной записи Gmail (точнее, к учетной записи Google Apps), используя Mail :: POP3Client

0 голосов
/ 04 марта 2010

Вы также можете использовать следующий код

use warnings;
use strict;
use Mail::POP3Client;
use IO::Socket::SSL;
use CGI qw(:standard);
my $cgi = new CGI;
my $LOG ;
open $LOG , ">>filename" ;
my $username  = 'name@gmail.com';
my $password  = '*******' ;
 chomp($password);
my $mailhost  = 'pop.gmail.com';
my $port      = '995';

$cgi->header();

my $pop = new Mail::POP3Client(
USER     => $username,
PASSWORD => $password,
HOST     => $mailhost,
PORT     => $port,
USESSL   => 'true',
DEBUG     => 0,
);
if (($pop->Count()) < 1) {
exit;
}

print $pop->Count() . " messages found!:$!\n";

for(my $i = 1; $i <= $pop->Count(); $i++) {
 foreach($pop->Head($i)) {
 /^(From|Subject|Email):\s+/i && print $_, "\n";
 }

$pop->BodyToFile($LOG,$i);

}

$pop->Close();

exit;
0 голосов
/ 03 марта 2010

Вы можете попробовать с помощью следующего модуля

  Mail::Webmail::Gmail
...