• Publicidad

Ayuda urgente con Perl, cgi y html

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda urgente con Perl, cgi y html

Notapor OwartKorp » 2006-11-02 23:34 @024

Ayuda, por favor. ¿Cómo construir con html, Perl y cgi, para leer email por medio de POP3?
Soy nuevo en esto.
Gracias por adelantado.
OwartKorp
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-11-02 23:14 @009

Publicidad

Notapor monoswim » 2006-11-03 07:33 @356

¡¡¡ Hola, bienvenido a los foros !!!

Chequea en el search.cpan.org algún módulo que lea la casilla de pop3, debe haber varios módulos que te puedan ayudar...

Simplemente instalas el módulo y lo usas desde tu .CGI

Ahora bien, ¿ sabés como usar HTML en tu CGI ? chequea algunos tutoriales en este mismo sitio sobre como hacer sitios dinámicos...

Espero que te sirva

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor explorer » 2006-11-03 07:59 @374

Me parece que quieres decir que necesitas, desde una página web, acceder a un servidor de correo por medio del protocolo POP3.

En CPAN hay unos cuantos módulos que hablan POP3:
http://search.cpan.org/search?query=pop3&mode=all&n=20

mientras que con el módulo CGI puedes construir la parte de HTML.

Un ejemplo: con el siguiente programa puedes ver la lista de mensajes de un buzón:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use Email::Folder;
use Email::FolderType::Net;

my $folder = Email::Folder->new('pop3://usuario:[email protected]:110');

print $_->header("Subject") for $folder->messages;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Este ejemplo está sacado de la página de manual de Email::Folder::POP3, pero con una diferencia: en el uri, no hay una '/' final, después del número de puerto. Si pusieras esa barra, Email::Folder pensará que quieres conectarte a una bandeja de correo local en formato MailDir. Esto es por un fallo de Email::FolderType::MailDir, que reconoce como propios todos los buzones que terminen en esa barra.

Luego, una vez obtenidos los mensajes, es fácil con CGI hacer una tabla para presentarla como HTML al usuario.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Esto es lo que intento hacer

Notapor OwartKorp » 2006-11-03 11:21 @514

En un HTML metí en una tabla:

Nombre de usuario
Clave de usuario

y dos botones que dice 'Procesar' y 'Limpiar'.
El propósito del CGI es conectarme a un correo POP3 y me dé los encabezados de los correos que tengo en mi cuenta. Sólo lectura.

¿Cómo hago eso?

Y esto es lo que intenté meter en el archivo CGI
--------------------------------------
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!C:\perl\bin\perl.exe -w

use strict;
use Net::POP3;

my $pop = Net::POP3->new('pop.mail.yahoo.com.mx', Timeout => 60) || die "No se pudo abrir conexión: $!";
$pop->login("USERNAME", "CONTRASEÑA") or die("No se pudo hacer login: $!");
my $msgnums = $pop->list;

my $encabezado = $pop->top($msgnum,No_LINEAS);
foreach my $msgnum (keys %$msgnums) {
  my $msg = $pop->get($msgnum);
  print @$msg;
}
my $msg = $pop->get($msgnum);

$pop->quit;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Pero ahora otro problema es que soy novato y ¿cómo lo relaciono con el HTML?

Gracias por su ayuda, de verdad.
OwartKorp
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-11-02 23:14 @009

Notapor explorer » 2006-11-03 11:28 @519

Todo lo que tenga que ver con CGI debería ser hecho a través del módulo CGI.

Consulta los tutoriales que hay en esta página web (el enlace está arriba del todo).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor OwartKorp » 2006-11-03 11:41 @529

explorer escribiste:Todo lo que tenga que ver con CGI debería ser hecho a través del módulo CGI.

Consulta los tutoriales que hay en esta página web (el enlace está arriba del todo).



¿¿es muy difícil lo que intento hacer? :shock: :?: :!:
OwartKorp
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-11-02 23:14 @009

Notapor explorer » 2006-11-03 11:58 @540

Depende de lo que sepas de Perl.
Si no sabes, si. Si sabes, no.

Yo que tu empezaría por leer los tutoriales.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor OwartKorp » 2006-11-03 12:04 @544

ah orale gracias
pues casi no se nada de Perl. Estoy echando un vistazo a los tutoriales, espero pescar algo para resolver este reto, pero si me sirviría de mucho tu ayuda, gracias de verdad.
Se ve que eres usuario experto en esto :)
Y estamos en contacto y gracias por responder lo mas rápido posible te lo agradezco.
OwartKorp
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-11-02 23:14 @009

Un ejemplo

Notapor explorer » 2006-11-03 21:22 @932

Me he hecho uno rápido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use CGI qw":standard *table";
use CGI::Carp qw(fatalsToBrowser);
use Net::POP3;

$|++; # No buffer

# Comienzo de la página web
print
        header,
        start_html('Buzón POP3'),
        h1('Leer Buzón POP3'),
        hr;

# Formulario
print
        start_form,
        "Servidor: ", textfield('servidor'),br,
        "Usuario : ", textfield('usuario') ,br,
        "Password: ", password_field('password'),br,
        submit,
        end_form;

# Si hay parámetros, los leemos y nos conectamos
if ( param() ) {

    print hr, h3('Conectando...'),"\n";

    $servidor = param('servidor');
    $usuario  = param('usuario');
    $password = param('password');

    $pop = Net::POP3->new( $servidor, Timeout => 60)
                or die "No se pudo abrir conexión a $servidor: $!\n";
    $pop->login( $usuario, $password )
                or die "No se pudo hacer login de usuario $usuario: $!\n";

    $msgnums = $pop->list;
    $numero = scalar keys %$msgnums;
    print p("Número de mensajes: $numero");

    # Pintamos una tabla con tres columnas, que serán el número de mensaje,
    # número de líneas que tiene y el primer campo From: de la cabecera
    if ( $numero ) {
        print start_table({-border=>1});

        foreach my $msgnum ( sort { $a <=> $b } keys %$msgnums) {

            $mensaje = $pop->get($msgnum);
            $lineas  = scalar @$mensaje;
            @from    = grep { /^From: / } @$mensaje;
            $from    = $from[0];            # Se supone que el primero es el que está en la cabecera

            # Pintamos una fila de tabla compuesta de 3 celdas
            print Tr([ td([ $msgnum, $lineas, escapeHTML($from) ]) ]);

        }

        print end_table;
    }

    # Cerramos la conexión
    $pop->quit;
}

print end_html;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor OwartKorp » 2006-11-05 09:11 @424

Muchas Gracias por enviarme este código ya lo chequé y si funcionó, pero no lee los correos, nada más los encabezados. ¿Esto cómo le hago?.
Claro si no es mucha molestia, verdad.
Muchas gracias. Te lo agradezco muchísimo de verdad.
OwartKorp
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-11-02 23:14 @009

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados