Página 1 de 1

Problema para enviar email con CGI

NotaPublicado: 2006-04-23 18:21 @806
por Kerberos1985
¡¡¡ Hola que tal !!!

Soy nuevo con esto de la programación en Perl y con CGI, pero es algo que he encontrado muy interesante.

Mi problema es el siguiente. Tengo un código para enviar email según un nombre de usuario que me es enviado a través de un formulario web; por el momento el nombre lo tengo fijo para efectos de prueba.

Pero al ejecutar el script da el siguiente error: "connect to localhost failed (Unknown error) no (more) retries!ERROR".

Tengo que decirles que estoy trabajando con Windows XP, ActivePerl 5 y Apache, pongo el código al final para ver si alguien me puede ayudar.

Gracias de antemano.

-Un saludo.

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

use strict;
use Mail::Sendmail;

# Creamos el hash con nuestro mensajes
my %mail = (
    To => 'Para [email protected]',
    From => 'De [email protected]',
    Subject => 'Asunto del mensaje',
    Message => 'Mi mensajes',
    Smtp => 'mail.google.com'
);

# Envíar el mensaje
unless (sendmail(%mail)) {
    # Error!
    print "ERROR\n";
    exit(1);
}

# Envío correcto.
print "OK\n";
exit(1);

NotaPublicado: 2006-04-24 05:58 @290
por explorer
Varias cosas...

* Pon siempre los módulos antes del 'use strict;'
* Los campos 'To' y 'From' están mal escritos. Debes poner sólo la dirección de correo electrónico. Nada de 'Para ' y 'De '.
* El mensaje de error sale por la siguiente razón. Primero, el módulo ha intentado conectarse al servidor 'mail.google.com' para poder enviar el correo. Como ha fallado, ha intentado conectarse al que tiene puesto por defecto, que es 'localhost' (la propia máquina). Y como tampoco ha respondido, sale con fallo. Debes poner en el campo 'Smtp' el nombre de tu servidor de correo. Atención, si tienes que identificarte como usuario (con su correspondiente contraseña) en el servidor de correo, este módulo no te sirve. Puedes usar algo como esto (no probado):
Código: Seleccionar todo
#!C:\perl\bin\perl.exe

use Email::Send;
use warnings;
use strict;

my $mensaje = <<'__MESSAGE__';
From: [email protected]
To: [email protected]
Subject: Asunto del mensaje

Mi mensajes
__MESSAGE__

my $cartero = Email::Send->new({mailer => 'SMTP'});
$cartero->mailer_args([Host => 'smtp.dominio.com', username => 'Kerberos1985', password => 'contraseña']);
$cartero->send($mensaje);
Ver Email::Send.

NotaPublicado: 2006-04-24 08:23 @391
por kidd
Hola:

Aquí en el sitio hay un tutorial que te muestra como mandar emails desde Windows:
http://perlenespanol.com/archives-tut/000050.html

Ahora, explorer tiene razón en sus comentarios, pero quisiera detallar que lo más seguro es que tu conexión con Google falle pues dudo que Google permita usar su mailserver para hacer envío de mensajes por parte de terceros.


Saludos

NotaPublicado: 2006-04-24 10:50 @493
por Kerberos1985
¡¡ Hola !!

Primero agradecerles por sus respuestas, pero me surgió un problema. No consigo encontrar el paquete Email::Send de la página de ActiveState con la herramienta ppm de Perl, por lo que no he podido probar el código de explorer.

Y el manual para enviar email en windows, ya lo vi y.... de hecho es de ahí donde tomé el código que copié en el foro el cual me da problemas.

Si alguno me puede decir dónde encontrar el paquete que busco o alguna otra idea con mi problema se lo agradecería mucho.

- un saludo.

NotaPublicado: 2006-04-24 11:11 @507
por explorer
Yo veo que sí está en la lista de módulos de ActiveState 8:
http://ppm.activestate.com/BuildStatus/5.8-E.html

Quizás tienes que actualizar tu versión de ActiveState...