Sab Feb 23, 2008 5:54 am
|
 |
Xbai
Perlero Nuevo

|
Registrado: 23 Feb 2008
Mensajes: 3
|
|
| Recuperar emails con Net::POP3 |
|
|
Hola foreros:
Tengo un problemilla con este módulo, soy incapaz de recuperar los correos de mi cuenta de Gmail. También he probado con Mail::Box::POP3 y con Mail::Webmail::Gmail y no consigo nada.
Tampoco puedo enviar mails con Net::SMTP, pero sí con el modulo Emails.
Los ejemplos que estoy utilizando los copio del libro "Perl Introducción al desarrollo Web" de S.Suehring, excepto el módulo que me funciona, el de Emails.
Os pongo el código para ver si me podéis ayudar, muchas gracias de antemano:
| Perl: | #!/usr/bin/perl -w
use Net:: POP3;
use strict;
my $usuario = "$usuario";
my $pass = "$pass";
my $pop3conn = Net:: POP3-> new('pop.gmail.com', Timeout=> 60)
or die "NADA.\n";
#$pop3conn->auth($usuario,$pass);
if($pop3conn-> login($usuario, $pass) > 0){
my $nummsg = $pop3conn-> list();
foreach my $nummsg (keys % {$nummsg}){
my $msg = $pop3conn-> get($nummsg);
print @ $msg;
$pop3conn-> delete($nummsg);
}
}
$pop3conn-> quit(); |
|
|
|
|

Sab Feb 23, 2008 4:30 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 3861
Ubicación: Valladolid, España
|
|
|
|
|
Bienvenido a los foros de Perl en Español, Xbai.
* ¿Has activado la opción de permitir acceso por POP en el menú de configuración de Gmail?
* En el new(), pon la opción Debug => 1, para saber qué es lo que pasa. |
|
Dom Feb 24, 2008 8:19 am
|
 |
Xbai
Perlero Nuevo

|
Registrado: 23 Feb 2008
Mensajes: 3
|
|
|
|
|
Gracias por responder explorer. Te cuento :
Gmail tiene el pop habilitado, leo el correo con Kontact.
La opcion Debug=>1 no me dice nada, el programa muere en el new() y no muestra más información.
Me resulta raro porque siempre recibo el GMail en el ordenador y además he utilizado varios modulos y nada.
Tengo abiertos los puertos 995 y 110, por si sirve de algo  |
|

Dom Feb 24, 2008 9:28 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 3861
Ubicación: Valladolid, España
|
|
|
|
|
Veo que hay que activar una conexión SSL para entrar por el puerto 995 de pop.gmail.com.
Prueba a usar el módulo Net::POP3::SSLWrapper en lugar del Net::POP3.
En realidad, lo que hace el módulo Net::POP3::SSLWrapper es llamar al módulo IO::Socket::SSL, para ayudar en la comunicación SSL.
Aquí tienes otro ejemplo:
| Perl: | use Mail:: POP3Client;
use IO:: Socket:: SSL;
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();
# si hay más de uno, los proceso
if ($count > 0){
# por cada uno lo voy trayendo
for ($i = 1; $i <= $count; $i++ ) {
# me los va devolviendo línea por línea
foreach ( $pop-> HeadAndBody($i) ) {
# acá va el procesamiento, por ejemplo
print $_;
}
}
} |
|
|

Dom Feb 24, 2008 3:50 pm
|
 |
Xbai
Perlero Nuevo

|
Registrado: 23 Feb 2008
Mensajes: 3
|
|
| ¡Por fin! |
|
|
¡¡Gracias, explorer!!. ¡¡He "recuperado" mensajes de mi cuenta,por fin!! , con el código que has posteado. Ayuda mucho esta modificación, sacada de la ayuda de CPAN:
| Perl: | # acá va el procesamiento, por ejemplo
/^ (From|Subject ):\ s+/i and print $_, "\n"; |
Pero me gustaría hacerlo con POP3, creo que será algo de autenticación SSL, pero el SSLWrapper tampoco funciona  |
|
Dom Feb 24, 2008 5:40 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 3861
Ubicación: Valladolid, España
|
|
|
|
|
| No podrás recuperar correo de Gmail con solo POP3. Ya lo dice la ayuda de Gmail. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|