2010-03-02 6 views
3

J'ai installé le module this pour accéder et contrôler dans une boîte de réception Gmail. Cependant, lorsque j'essaie de me connecter via un petit script Perl et de tester la fonctionnalité, j'obtiens ce message d'erreur.Comment m'authentifier dans Gmail en utilisant Perl?

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

Ceci est une erreur générée dans le module Gmail.pm.

Je peux cingler l'URL en question (https://www.google.com/accounts/ServiceLoginBoxAuth) donc je pense que le problème n'est pas de trouver l'URL. De plus, je sais que les informations d'identification sont correctes et fonctionnent à cette URL car je les ai essayées manuellement. J'utilise le script this pour les tests. J'ai fourni mes informations d'identification dans les endroits appropriés. J'ai également installé this module avec le même type d'erreur.

Une idée de pourquoi je suis bloqué?

+8

Cette répartition n'a pas été mis à jour depuis 2006; GMail a beaucoup changé pendant ce temps. Pourquoi ne pas utiliser IMAP? – friedo

+0

n'a pas vu cette date de 2006 .... merci de me le faire savoir .... où puis-je trouver un module IMAP? ou ai-je même besoin d'un – CheeseConQueso

+0

im pas trop sur l'accès et l'analyse des boîtes e-mail comme vous pouvez le constater par mon dernier message qui a été abattu – CheeseConQueso

Répondre

12

Utilisation Mail::IMAPClient comme indiqué ci-dessous. Pour passer l'authentification SSL via Mail :: IMAPClient, vous devez avoir IO :: Socket :: SSL de Net :: SSLeay installé. Si oui, cela fonctionne comme un charme.

#!/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(); 
+0

qui m'a connecté .... merci .... maintenant pour parcourir le module pour les méthodes – CheeseConQueso

+0

quelle est la méthode (s) pour analyser les messages? – CheeseConQueso

+0

nvm ...Je l'ai eu – CheeseConQueso

2

J'accède avec succès un compte gmail (compte Google Apps pour être précis) en utilisant Mail :: POP3Client

+0

merci .. .. semble qu'il pourrait se connecter (pas de msgs d'erreur), mais il ne sort rien selon le premier exemple de code cpan – CheeseConQueso

+0

avez-vous activé l'accès POP3 dans votre compte Gmail? PROTIP: si vous ne souhaitez pas modifier l'état de votre boîte de réception, utilisez la balise "recent" dans votre UID: http://mail.google.com/support/bin/answer.py?hl=fr&answer= 47948 – coffeepac

+0

ouais c'est activé – CheeseConQueso

2

Si vous ne pouvez pas accéder à gmail via POP3 normal ou IMAP soit, alors vous avez un problème de configuration plutôt qu'une programmation problème.

je vais chercher mon courrier de gmail (en fait Google Apps, qui utilise la même interface), en utilisant les détails de configuration décrite ici: (Cette réponse est beaucoup plus approprié pour Super User bien) http://download.gna.org/hpr/fetchmail/FAQ/gmail-pop-howto.html

0

Vous pouvez essayé avec le module suivant

Mail::Webmail::Gmail 
+0

C'est ce qu'il a fait. Mais le module est très probablement périmé. –

0

Vous pouvez utiliser le code suivant également

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 = '[email protected]'; 
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; 
Questions connexes