Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Enviar Mail con archivo adjunto Responder al tema
Nuevo tema


Página 1 de 2  [ 25 mensajes ]  Ir a página 1, 2  Siguiente
 
Nota 2006-06-23 12:49 @576

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
Enviar Mail con archivo adjunto
Hola a Todos. Soy algo nuevo en Perl y la ves pasada pude programar un envío de e-mail en perl y la verdad me causó muchos problemas pero finalmente me funcionó. El problema es que ahora necesito que ese mismo código me sirva para enviar mails pero con archivos adjuntos. Quisiera que me ayuden a ver cómo lo puedo hacer ya que no tengo idea y los ejemplos que encontré no son muy claros. Gracias de antemano. Acá les pego el código que uso para envío de e-mail.

Código:
#!C:\perl\bin\perl.exe -w

use strict;
use Mail::Sendmail;
use CGI qw(:standard);

my $nombre = param('textnombre');
my $file = param('file');
my $mensaje =param('todo');


# Creamos el hash con nuestro mensajes
my %mail = (
    To => 'mario.flores@makros.biz',
    From => 'Web',
    Subject => 'Consultas',
    Message => $mensaje,
    file => $file,
    Smtp => 'smtpserver'
);

# Envíar el mensaje
unless (sendmail(%mail)) {
    print "Location: http://localhost/noenvio.htm \n\n";
    # Error!
    exit(1);
}

# Envío correcto.
print "Location: http://localhost/envio.htm \n\n";

exit(1);

_________________
Marfperu


Nota 2006-06-23 14:44 @655
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Bienvenido al foro. Aquí intentaremos ayudarte. Lo primero que deberías ver serían los tutoriales y si no encuentras nada, prueba a Buscar en este mismo foro. Por ejemplo, buscando por la palabra adjunto, ha salido la respuesta:

¡Respondida!

Más pistas:
* sendmail
* Problemas al enviar mail con Perl

Si esto no te lo soluciona, aquí te daremos más pistas.


Nota 2006-06-23 15:52 @703

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
Enviar Mail Con Archivo Adjunto
Bueno yo uso el módulo de Sendmail, no el MIME::Entity en todo caso guiandote del código que puse en el primer mensaje, podrias decirme como hacerlo con el MIME:Entity?

ok y ese modulo donde lo consigo lo estoy buscando en internet y no lo encuentro, otra pregunta seria, donde ubico el cuerpo del mensaje, no veo la variable que tenga ese valor.

_________________
Marfperu


Nota 2006-06-23 17:53 @786
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
El cómo instalarlo depende de tu sistema operativo.

Como regla general, primero debes buscar los módulos que se hayan empaquetado para tu sistema. En Windows, se suele usar el gestor ppm que viene con ActiveState.

En Linux, depende de tu distribución. Por ejemplo, en Debian, hay muchos paquetes con módulos. El que te interesa se llama libmime-perl, por lo que haciendo un apt-get install libmime-perl se instalará sin problemas. El resto de distribuciones puede tener el mismo nombre o no. En Suse se llama perl-MIME-tools.

Si no encuentras el nombre correcto del paquete, siempre se puede probar a instalar con el comando cpan MIME::Entity.

Como solución, final, queda bajárselo de donde están todos los paquetes, CPAN: MIME-tools.


Última edición por explorer el 2006-07-13 05:39 @277, editado 1 vez en total

Nota 2006-06-23 19:17 @845

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
Enviar Mail Con Archivo Adjunto
a ver:

Primero baje el archivo del modulo MIME:Entity es un archivo entiti.pm que lo ubique en la carpeta site/MIME de la caprte principal del perl

Segundo Luego Cree el archivo enviar.cgi que tiene este contenido

Código:
#!C:\perl\bin\perl.exe -w

use MIME::Entity;

my $file = param('file');
my $mensaje =param('todo');

my $msg = MIME::Entity->build(
    From    => 'Web',
    To      => 'mario.flores@makros.biz',
    Subject => "Únete a Nosotros-Curriculum",
    Type    => 'text/plain',
    Encoding => 'base64',
    Data   => $mensaje,
);

$msg->attach(
    Path     => $file,
    Type     => 'application/msword',
    Encoding => 'base64',
);

$msg->smtpsend(
    Host  => 'mailserver',
    Hello => 'localhost',
);


Y luego de hacer la prueba me nada una pagina de error que dice lo siguiente:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request

no se donde podria estar el error o de que me estoy olvidando te agradeceria cualquier ayuda extra, no se derrepente me estoy olvidandando de algun modulo o no es solo copiarlo, o derrepente hay algun error en el codigo.

gracias.

_________________
Marfperu


Nota 2006-06-23 19:29 @853
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Seguramente el módulo depende de otros.

Los métodos actuales de instalación de módulos no suelen llegar a la fase de "bajarme el módulo y copiarlo al disco", sino que con la ayuda de comandos como cpan o ppm, todo el proceso es automático, incluído la instalación de módulos adicionales.

Ejecuta perl -MMIME::Entity -e 1 para que veas qué módulos faltan.

Veo que estás en Windows. ¿Qué Perl tienes instalado? ¿ActivePerl?

En este foro encontrarás varios mensajes sobre cómo instalar módulos con PPM.

Por ejemplo, este: http://perlenespanol.baboonsoftware.com ... .php?t=673


Última edición por explorer el 2006-06-25 18:23 @807, editado 1 vez en total

Nota 2006-06-23 19:36 @858

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
Enviar Mail Con Archivo Adjunto
Si, tengo el ActivePerl, mira la verdad soy muy nuevo en perl, el primer codigo que cogi fue el de enviar correo y me trajo muchos problemas para mi buena suerte en ese entonces el modulo de sendmail solo se tuvo que bajar y copiar para que funcione, y el codigo de envio que te mostre en el primer mensaje lo encontre en otro lado y lo pude entender, ahora tengo un requerimiento que ahora sea el envio del mail pero con un adjunto, el problema de que este modulo de Entity si se tenga que instalr puede ser, pero no tengo idea de como instalarlo yo copie todos los modulos que vinieron en el archivo que me baje pero aun asi no funciona te agradeceria me expliques como instalarlo en todo caso para seguir probando el envio, por lo que veo tambien el codigo que te envie esta bien ya que no hay ninguna observacion de tu parte, entonces el problema esta en los modulos.

Explorer ya instalé el módulo con el ppm y probe el envío de correo y me vuelve a mostrar la misma pantalla de error. ¿Habrá algún error en el código? Algo anda mal. Ojalá puedas ayudarme.

_________________
Marfperu


Nota 2006-06-25 07:09 @339
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Solución con Mail::Sender
Tu programa no funcionaba porque estabas usando la función param(), que viene importada al usar el módulo CGI, así que debes usarlo si quieres que este programa sea un cgi.

He vuelto a leer el primer mensaje y me he dado cuenta de que lo estábamos haciendo mal. Tu no quieres enviar un correo con un adjunto hacia el cliente, si no que quieres RECIBIR un correo electrónico con un texto y un fichero adjunto que te envian DESDE un cliente.

El siguiente ejemplo lo he probado en mi servidor y funciona, usando el módulo Mail::Sender
Código:
#!/usr/bin/perl
use CGI ':standard';
use Mail::Sender;
use warnings;
use strict;

# Variables
my $nombre  = "No hay nombre";
my $mensaje = "No hay mensaje";
my $fichero = "No hay fichero";

# Pintamos la página web
print
        header,
        start_html('Envío de consultas'),
            h1({align=>'center'},'Envío de consultas'),
            hr({width=>'80%'}),
            start_multipart_form,
                table(
                    Tr({valign=>'top'},
                        td("Nombre:"),
                        td(textfield(   -name=>'nombre',
                                        -size=>40,
                                        -maxlength=>80)),
                    ),
                    Tr({valign=>'top'},
                        td("Mensaje:"),
                        td(textarea(    -name=>'mensaje',
                                        -default=>'',
                                        -rows=>10,
                                        -columns=>50)),
                    ),
                    Tr({valign=>'top'},
                        td("Currículum:"),
                        td(filefield(   -name=>'fichero',
                                        -default=>'Nombre del fichero a enviar',
                                        -size=>50,
                                        -maxlength=>80)),
                    ),
                ),
                submit,
            end_form,
        ;

# Comprobamos si el usuario nos ha pasado algún parámetro
if ( param() ) {

    $nombre  = param('nombre');
    $fichero = param('fichero');
    $mensaje = param('mensaje');

    # Los sacamos en pantalla, para comprobar
    print
            hr,
            p("Datos enviados:"),
            p,"Nombre: $nombre",br,"Mensaje: $mensaje",br,"Fichero: $fichero",
    ;

    # Leemos el fichero enviado
    my $fh = upload('fichero');
    my $fichero_contenidos;
    my $fichero_type = "";
    if ( defined $fh ) {
        binmode $fh;
        while ( <$fh> ) {
            $fichero_contenidos .= $_;
        }
        $fichero_type = uploadInfo($fichero)->{'Content-Type'};
    }

    # Preparamos el correo electrónico
    my $msg = Mail::Sender->new({
        smtp    => 'correo.midominio.com',
        from    => 'yo@midominio.com',
        to      => 'el@sudominio.com',
        subject => 'Consulta enviada desde el web',
    });
    $msg->OpenMultipart({});
    $msg->Body({ msg => $mensaje });
    $msg->print("\r\n"x2);  # sobra?
    if ( defined $fh ) {
        $msg->Part({
            ctype => $fichero_type,
            description => $fichero,
            encoding => 'Base64',
            disposition => qq(attachment; filename="$fichero"; type="$fichero_type"),
            msg => $fichero_contenidos,
        });
    }
    $msg->Close();
}

print end_html;

__END__
Pero tiene que haber formas mucho más cómodas...


Última edición por explorer el 2006-06-25 18:31 @813, editado 4 veces en total

Nota 2006-06-25 14:39 @652
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Solución con Email::Stuff
Esta es otra forma, un poco más sencillo, pero a costa de instalar una docena de módulos, todos de los que depende Email::Stuff
Código:
#!/usr/bin/perl
use CGI ':standard';
use Email::Stuff;
use warnings;
use strict;

# Variables
my $nombre  = "No hay nombre";
my $mensaje = "No hay mensaje";
my $fichero = "No hay fichero";

# Pintamos la página web
print
        header,
        start_html('Envío de consultas'),
            h1({align=>'center'},'Envío de consultas'),
            hr({width=>'80%'}),
            start_multipart_form,
                table(
                    Tr({valign=>'top'},
                        td("Nombre:"),
                        td(textfield(   -name=>'nombre',
                                        -size=>40,
                                        -maxlength=>80)),
                    ),
                    Tr({valign=>'top'},
                        td("Mensaje:"),
                        td(textarea(    -name=>'mensaje',
                                        -default=>'',
                                        -rows=>10,
                                        -columns=>50)),
                    ),
                    Tr({valign=>'top'},
                        td("Currículum:"),
                        td(filefield(   -name=>'fichero',
                                        -default=>'Nombre del fichero a enviar',
                                        -size=>50,
                                        -maxlength=>80)),
                    ),
                ),
                submit,
            end_form,
        ;

# Comprobamos si el usuario nos ha pasado algún parámetro
if ( param() ) {

    $nombre  = param('nombre');
    $fichero = param('fichero');
    $mensaje = param('mensaje');

    # Los sacamos en pantalla, para comprobar
    print
            hr,
            p("Datos enviados:"),
            p,"Nombre: $nombre",br,"Mensaje: $mensaje",br,"Fichero: $fichero",
    ;

    # Leemos el fichero enviado
    my $contenido = '';
    my $fh = upload('fichero');
    my ($bytes,$buffer);
    while ( $bytes = read($fh,$buffer, 8192) ) {
        $contenido .= $buffer;
    }

    # Enviamos el correo electrónico
    Email::Stuff->from      ( 'yo@midominio.com'             )
                ->to        ( 'el@tudominio.com'             )
                ->subject   ( 'Fichero enviado desde web'    )
                ->text_body ( $mensaje                       )
                ->attach    ( $contenido, filename=>$fichero )
                ->using     ( SMTP => 'correo.midominio.com' )
                ->send;
}

print end_html;

__END__


Última edición por explorer el 2006-06-25 18:32 @814, editado 3 veces en total

Nota 2006-06-25 18:08 @797
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Solución con MIME::Entity
Bueno, por fin encontré la forma de hacerlo con el módulo MIME::Entity.

El truco consistió en meter dos adjuntos. Primero el $mensaje de texto y luego el $fichero.

Para enviar el correo pongo tres opciones:
* La primera es llamando al método send(). El mensaje llegará con el remitente puesto al usuario que corre el servidor web.
* La segunda es usando una llamada directa a sendmail.
* Y la tercera es usando el smtpsend que ya tiene el MIME::Entity. Notar que me he visto obligado a poner un campo MailFrom, porque parece ser MIME::Entity no lo coge del From en la función build... La opción Hello depende de la configuración del servidor de correo, si la necesita o no...

El texto que pongo después del mensaje, "\r\n", es para que escriba dos finales de línea. El estándar MIME exige al menos uno, pero yo lo he puesto así porque veía que las partes MIME aparecen dentro del mensaje sin ninguna línea de separación. A mi no me ha dado problemas el quitar ese texto, pero está ahí por si da problemas en algún cliente de correo de Windows, por ejemplo. Yo las pruebas las estoy haciendo con Evolution en Linux y le da igual si está puesto ese texto o no.

Código:
#!/usr/bin/perl
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser);
use MIME::Entity;
use warnings;
use diagnostics;
use strict;

# Variables
my $nombre  = undef;
my $mensaje = undef;
my $fichero = undef;
my $contenido = undef;
my $fh = undef;

# Pintamos la página web
print
        header,
        start_html('Envío de consultas'),
            h1({align=>'center'},'Envío de consultas'),
            hr({width=>'80%'}),
            start_multipart_form,
                table(
                    Tr({valign=>'top'},
                        td("Nombre:"),
                        td(textfield(   -name=>'nombre',
                                        -size=>40,
                                        -maxlength=>80)),
                    ),
                    Tr({valign=>'top'},
                        td("Mensaje:"),
                        td(textarea(    -name=>'mensaje',
                                        -default=>'',
                                        -rows=>10,
                                        -columns=>50)),
                    ),
                    Tr({valign=>'top'},
                        td("Currículum:"),
                        td(filefield(   -name=>'fichero',
                                        -default=>'Nombre del fichero a enviar',
                                        -size=>50,
                                        -maxlength=>80)),
                    ),
                ),
                submit,
            end_form,
        ;

# Comprobamos si el usuario nos ha pasado algún parámetro
if ( param() ) {

    $nombre  = param('nombre');
    $fichero = param('fichero');
    $mensaje = param('mensaje');

    # Leemos el fichero enviado
    if ( $fichero ) {
        $fh = upload('fichero');
        if ( $fh ) {
            my ($bytes,$buffer);
            while ( $bytes = read($fh, $buffer, 8192) ) {
                $contenido .= $buffer;
            }
        } else {
            print "ERROR: NO PUEDO LEER EL FICHERO ENVIADO<br>";
        }
    }

    # Sacamos en pantalla información de lo recibido
    print
            hr,
            p("Datos enviados:"),
            p,"Nombre: $nombre",br,"Mensaje: $mensaje",br,"Fichero: $fichero, tamaño: ", length($contenido)
    ;

    # Creamos el correo electrónico
    my $msg = MIME::Entity->build(
                    Type    => "multipart/mixed",
                    From    => 'web@tottus.com.pe',
                    To      => 'mario.flores@makros.biz',
                    Subject => "Únete a nosotros - $nombre",
    );

    # Adjuntamos el mensaje si lo hay
    if ( $mensaje ) {
        $msg->attach(
                    Data    => [ $mensaje, "\r\n" ],
        );
    }

    # Adjuntamos el fichero si lo hay
    if ( defined($fh) ) {
        $msg->attach(
                    Type => uploadInfo($fichero)->{'Content-Type'} || 'application/octet-stream',
                    Data    => [ $contenido ],
                    Encoding=> 'base64',
        );
    }
    # Tercera forma de envío, con el smtpsend de Mail::Internet
    $msg->smtpsend(
                   Host    => 'mail.makros.biz',
                   Hello   => 'mail.makros.biz',
                   MailFrom=> 'web@tottus.com.pe',
   );

}

print end_html;

__END__


Última edición por explorer el 2006-06-28 13:30 @604, editado 3 veces en total

Nota 2006-06-26 10:07 @463

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
No funciona :(, instale el modulo MIME-tools que contiene el entity, con el archivo ppd, asi que supongo esta bien instalado, de ahi use el ultimo código que me enviaste reemplazando los valores especificos, pero aun asi sigue apareciendo la misma pantalla y no envia el correo.
Asi es tal cual lo probe, el archivo donde lo guardo se llama enviado.cgi y esta puesto en la carpeta cgi-bin del apache, ya no se que mas hacer.

_________________
Marfperu


Nota 2006-06-26 10:53 @495
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Bueno, entonces hay que mirar otras cosas que no sean Perl.

* Instala (si no está) el módulo CGI::Carp, colócalo después del use CGI. De esa manera verás los errores en la ventana del navegador.
Colócala así:
Código:
use CGI::Carp qw(fatalsToBrowser);
* ¿El servidor tiene servicio de correo? ¿El servidor de correo admite una dirección como 'Web' como remitente?
* ¿Has revisado los logs de actividad del servidor web? ¿Qué ponen?
* Desde la línea de comandos ejecuta perl -c script.pl cambiando script.pl por tu programa. Perl te dirá si no hay errores de sintaxis.
* Si lo anterior no funciona, iremos de atrás adelante... ¿si quitas toda la parte del programa del if ( param() ) { ... }, el script funciona y sale una tabla en pantalla?


Nota 2006-06-26 12:06 @546

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
A Ver, hice lo que me indicaste, ya tenia instalado el modulo cgi::carp, y me muestra errores, lo malo es que siempre sale que falta tal módulo, y mientras los voy poniendo siempre sale que falta otro, primero fue el Mail::internet, lo puse y de ahí salió que faltaba el Mail:Field, de ahí el Mail:Header, de ahí el IO:wrap todos esos los puse, de ahí salió que faltaba el MINE::base64 ese si estaba pero estaba en otra carpeta, lo moví de ubicación y de ahí salió que faltaba el XSloader.pm, lo bajé y lo ubiqué en la carpeta Perl/Lib y salió este último error que la verdad no se que hacer ya.

Software error:
Código:
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Head.pm:
[Mon Jun 26 12:02:34 2006] Head.pm:
[Mon Jun 26 12:02:34 2006] Words.pm:
[Mon Jun 26 12:02:34 2006] Words.pm:
[Mon Jun 26 12:02:34 2006] Base64.pm:
[Mon Jun 26 12:02:34 2006] XSLoader.pm: Can't locate loadable object for module MIME::Base64 in @INC (@INC contains: C:\Perl\lib C:\Perl\site\lib .) at C:\Perl\site\lib/MIME/Words.pm line 77
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Head.pm:
[Mon Jun 26 12:02:34 2006] Head.pm:
[Mon Jun 26 12:02:34 2006] Words.pm:
[Mon Jun 26 12:02:34 2006] Words.pm: BEGIN failed--compilation aborted at C:\Perl\site\lib/MIME/Words.pm line 77.
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Head.pm:
[Mon Jun 26 12:02:34 2006] Head.pm: BEGIN failed--compilation aborted at C:\Perl\site\lib/MIME/Head.pm line 118.
[Mon Jun 26 12:02:34 2006] Entity.pm:
[Mon Jun 26 12:02:34 2006] Entity.pm: BEGIN failed--compilation aborted at C:\Perl\site\lib/MIME/Entity.pm line 224. BEGIN failed--compilation aborted at c:\ARCHIV~1\APACHE~1\apache\cgi-bin\enviado.cgi line 5.


Ya no tengo idea que más ver, le quite la sección a partir de if() que me dijiste y me sale el mismo error.

_________________
Marfperu


Nota 2006-06-26 14:00 @625
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Si has tenido que bajar e instalar el módulo XSLoader.pm eso significa que tu instalación de Perl ha sufrido un golpe en la naríz o que es muy, muy, viejo.

Mi recomendación es: borra (desinstala) toda la instalación de Perl del ordenador (guardando tus scripts y programas, claro). Bájata la última versión del ActivePerl y la instalas. Y cuando necesites instalar un nuevo módulo, usa de forma ->EXCLUSIVA<- el programa PPM.

El mensaje de error del XSLoader está diciendo que no es que no encuentre el módulo MIME::Base64, sino que lo que no encuentra es el MIME/Base64/Base64.so o MIME/Base64/Base64.dll, es decir, la librería compilada de la que depende el módulo MIME::Base64. En mi ordenador esa librería está en /usr/lib/perl/5.8.8/auto/MIME/Base64.

Por eso existen programas como el PPM, para evitar estos problemas de que si te bajas un módulo y lo colocas 'a mano'. Puede darse el caso, como se vé aquí, de que se nos olvide 'colocar' otro fichero.


Nota 2006-06-26 14:29 @645

Perlero Nuevo
Registrado: 2006-06-23 12:43 @571
Mensajes: 12
Ok supuse eso de que era muy antiguo, lamentablemente el servidor en el cual voy a trabajar tiene esta version, y no puedo instalar uno mas actualizado, como podria hacer, o que modulo puedo usar para poder realizar estos envios de mail con adjunto, como te comente el envio de correo con sendmail si funciono a la perfeccion, otra cosa, tienes alguna direccion donde pueda bajar los modulos pero para windows, porque la pagina de CPAN baja todos para linux y yo trabajo en plataforma windows, el problema es que para instalar en ppm siempre busca un archivo ppd y en los paquetes que bajo de CPAN nunca estan esos archivos, solo logre ubicar el del MIME-tools en otra pagina pero no estan los demas. Ahora lo que voy a hacer es desinstalar el perl y volverlo a instalar con mucho cuidado en mi servidro de prueba y volver a ejecutar todas las recomendaciones que me has dado para ver si logro hacer ese envio.

_________________
Marfperu


Responder al tema  [ 25 mensajes ]  Ir a página 1, 2  Siguiente

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO