• Publicidad

Enviar email con Perl

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

Enviar email con Perl

Notapor jcarranza » 2010-04-28 05:53 @287

Hola, estoy probando un script en Perl para enviar un email.
De momento he programado esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:perlbinperl.exe -w
  2. use strict;
  3. use Mail::Sendmail;
  4.  
  5. # Creamos el hash con nuestro mensajes
  6. my %mail = (
  7. To => 'Para [email protected],
  8. From => 'De webmaster@posadasantelmo.com,
  9. Subject => 'Prueba de Mensaje',
  10. Message => 'Hola, esto es una prueba',
  11. #he quitado la variable Smtp
  12. );
  13.  
  14. # Envíar el mensaje
  15. unless (sendmail(%mail))
  16. {
  17. # Error!
  18. print "ERROR \n";
  19. exit(1);
  20. }
  21.  
  22. # Envío correcto.
  23. print "OK \n";
  24. exit(1);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero no me funciona... ¿Qué está mal?

¡¡Saludos!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Publicidad

Re: Enviar email con Perl

Notapor explorer » 2010-04-28 05:59 @291

Te faltan comillas de cierre en las líneas 7 y 8.

Te recomiendo que uses un editor con coloreado de sintaxis.
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

Re: Enviar email con Perl

Notapor jcarranza » 2010-04-28 06:21 @306

Hola,
lo tengo con comillas en mi PC.
Me salta un error: conexión a localhost fallida (error desconocido).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:perlbinperl.exe -w
  2. use strict;
  3. use Mail::Sendmail;
  4.  
  5. # Creamos el hash con nuestro mensajes
  6. my %mail = (
  7. To => 'Para [email protected]',
  8. From => 'De [email protected]',
  9. Subject => 'Prueba de mensaje',
  10. Message => 'Mi mensaje de prueba. Adios',
  11.  
  12. );
  13.  
  14. # Envíar el mensaje
  15. unless (sendmail(%mail)) {
  16. # Error!
  17. print "ERROR \n";
  18. exit(1);
  19. }
  20.  
  21. # Envío correcto.
  22. print "OK \n";
  23. exit(1);
  24.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿¿Qué hago mal??
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Enviar email con Perl

Notapor explorer » 2010-04-28 07:55 @371

Pues que el programa ha intentado conectarse a un servidor de correo que esté en tu propia máquina (localhost), y ha fallado porque no ha encontrado ninguno.

Deberías indicarle al módulo la dirección de algún servidor de correo... o instalar uno en tu propio ordenador.

Repasa la configuración de los parámetros que puedes usar en el módulo Mail::Sendmail, sobre todo en lo referente a tener que editar el propio módulo Sendmail.pm para indicar dónde están los servidores de correo.

Este módulo ya es algo viejo. Te recomiendo que uses otro más moderno, como por ejemplo, de la rama Email:: (Email::Sender, por ejemplo).

En Enviar Mail con archivo adjunto tienes un ejemplo de módulos de envío de correo.
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

Re: Enviar email con Perl

Notapor aivdeveloper » 2010-11-09 08:47 @408

explorer, usando Sendmail tengo un problemita y es que el texto que le paso a Message, si contiene tildes y "caracteres especiales" luego me aparecen mal del tipo Â~ ...

¿cómo puedo decirle el charset o algo para que lo pinte bien?

Gracias.
aivdeveloper
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-11-09 08:43 @405

Re: Enviar email con Perl

Notapor aivdeveloper » 2010-11-09 08:52 @411

Solucionado,

Al principio he puesto use utf8;

Gracias, pues lo he encontrado en este foro.
aivdeveloper
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-11-09 08:43 @405

Re: Enviar email con Perl

Notapor explorer » 2010-11-09 08:57 @415

Bienvenido a los foros de Perl en Español, aivdeveloper.

Encantados de haberte podido ayudar, aivdeveloper.

La indicación del charset, creo que tendría que ser en alguna de las cabeceras MIME del correo.

Con el use utf8; estás indicando que el ->tú<- programa contiene textos en codificación utf8.

Pero no creo que el módulo de correo se entere de que tiene que poner ese charset.
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

Re: Enviar email con Perl

Notapor panterozo » 2010-11-23 01:09 @089

Les dejo un módulo excelente:

Actualmente estoy utilizando Net::SMTP::TLS, donde te puedes conectar al correo de Google, y enviarte emails desde tu cuenta de Google, valga la redundancia. Más que útil.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Net::SMTP::TLS;
  2. my $mailer = new Net::SMTP::TLS(
  3.     'smtp.gmail.com',
  4.      Hello   =>      'smtp.gmail.com',
  5.      Port    =>      587,
  6.      User    =>      'tu_user',
  7.      Password=>      'tu_pass');
  8. $mailer->mail('[email protected]');
  9. $mailer->to('[email protected]');
  10. $mailer->data;  
  11. $mailer->datasend($TO);
  12. $mailer->datasend("From: Panterozo\r\n");
  13. $mailer->datasend("Mime-Version: 1.0\r\n");
  14. $mailer->datasend("Content-Type: text/html; charset=\"ISO-8859-1\"\r\n");#Para usar html
  15. $mailer->datasend("Subject: Asunto del email\r\n\n");
  16. $mailer->datasend($email); #Lo que quieras enviar
  17. $mailer->dataend;  
  18. $mailer->quit;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡¡Saludos!!
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400


Volver a Básico

¿Quién está conectado?

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