• Publicidad

Cómo enviar un correo electrónico y que interprete HTML

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

Cómo enviar un correo electrónico y que interprete HTML

Notapor Dshellnoi_Unix » 2013-04-26 12:27 @561

He estado observando unos scripts en el foro del maestro explorer y funcionan a la perfección, pero mi problema es que al recibir el mensaje no se interpreta el HTML y quiero que se vea bonito cuando el cliente abra el correo. ¿Alguien me podría indicar por qué no se interpreta el HTML?

En los primeros intentos usé estos módulos y funcionan perfectamente pero no interpreta el HTML.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Email::Sender::Simple qw(sendmail);
  2. use Email::Sender::Transport::SMTP::TLS;
  3. use Try::Tiny;
  4.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En los siguientes intentos usé este código y tampoco me interpreta el HTML.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use Email::Send::SMTP::Gmail;
  4.  
  5. my $mail=Email::Send::SMTP::Gmail->new(
  6.     -smtp=>'smtp.gmail.com',
  7.     -login=>'USUARIO',
  8.     -pass=>'CONTRASEÑA',
  9. );
  10.  
  11. $mail->send(
  12.     -to=>'PARA',
  13.     -subject=>'TEST',
  14.     -verbose=>'1',
  15.     -body=>"<h1>hola</h1>",
  16.    # -attachments=>'PATH',
  17. );
  18.  
  19. $mail->bye;
  20.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Qué estoy haciendo mal?
Gracias de antemano.
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria

Publicidad

Re: Cómo enviar un correo electrónico y que interprete HTML

Notapor explorer » 2013-04-26 13:39 @610

Puede que no estés creando un HTML correcto. Veo en el segundo ejemplo que pones un <body>, pero realmente has de poner un <html>... y todo lo demás.

Otra posibilidad es que el cliente de correo que estés usando tenga puesta la opción que impida ver el código HTML que trae el mensaje. Por ejemplo, en el Mozilla Thunderbird se puede elegir cómo ver los mensajes: texto plano, HTML simple (sin estilos) y HTML original.

Por otra parte, aunque te molestes mucho en hacer muy bonitos los correos, el receptor los verá como le dé la gana. Yo, por ejemplo, los veo siempre como texto plano... me ahorra disgustos y consumo de recursos, además de que la presentación es mucho más rápida y limpia.
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: Cómo enviar un correo electrónico y que interprete HTML

Notapor Dshellnoi_Unix » 2013-04-26 16:22 @724

Estoy usando Gmail para ver el correo. Intenté construir el html con el doctype, content, charset y todo lo demás que lleva un html, pero nada.

Algo así es lo que estaba intentando pero de momento no hay manera :(

correo.png
correo.png (136.11 KiB) Visto 3134 veces


Gracias por contestar.
Saludos
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria

Re: Cómo enviar un correo electrónico y que interprete HTML

Notapor explorer » 2013-04-26 16:41 @737

Envíame uno a mí. Con que sea uno sencillo, como un HTML con un solo párrafo que diga Hola, vale.

Mándalo a la dirección que te indica el sobre que hay debajo de mi foto, en cada mensaje.
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: Cómo enviar un correo electrónico y que interprete HTML

Notapor Dshellnoi_Unix » 2013-04-26 19:20 @847

Perdón por la tardanza en contestar ya que te ofreciste a ayudarme como siempre :)

Intenté solucionar las cosas por mi mismo para no molestar más de lo que lo hago ya.

Me lié con el módulo MIME::Lite, pero no conseguí ningún resultado positivo :(

Así que al final opté por revisar la documentación de Email::Send::SMTP::Gmail:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use Email::Send::SMTP::Gmail;
  4.  
  5.  
  6. my $mail=Email::Send::SMTP::Gmail->new(
  7.     -smtp=>'smtp.gmail.com',
  8.     -login=>'USER',
  9.     -pass=>'PASSWORD',
  10. );
  11.  
  12.  $mail->send(
  13.     -to=>'PARA',
  14.     -subject=>'test',
  15.     -contenttype=>'text/html', #Este era el fallo
  16.     -verbose=>'1',
  17.     -body=>'<h1>Perl en Español =^.^= </h1>',
  18. );
  19.  
  20. $mail->bye;
  21.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Resultado:
correohtml.png
correohtml.png (18.09 KiB) Visto 3126 veces


Gracias al foro, pero sobre todo a explorer por la paciencia que demuestra con nosotros y porque siempre está dispuesto a compartir su tiempo (bien escaso en estos tiempos que corren) y su conocimiento.
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria

Re: Cómo enviar un correo electrónico y que interprete HTML

Notapor serdj » 2014-06-17 04:21 @223

Buenos días.

Soy nuevo en el foro aunque ya lo usaba desde hace un tiempo para resolver dudas.

Tengo un script que debe mandar un correo electrónico a varios usuarios. He seguido el ejemplo de Dshellnoi_Unix, pero no me funciona. Creo que es porque mi conexión pasa por un proxy que corta la conexión pues al ejecutar el script sale el siguiente error:

Could not connect to SMTP server
Can't locate object method "send" via package "-1" (perhaps you forgot to load "-1"?) at C:\Users\...\script.pl line 264


que es, efectivamente, la llamada a send().

Si ejecuto el script desde una conexión libre de proxy, obtengo el siguiente mensaje:

Authentication (SMTP) failed
Can't locate object method "send" via package "-1" (perhaps you forgot to load "-1"?) at C:\Users\...\script.pl line 264


Entonces, ¿el usuario y contraseña es el del emisor del mensaje?

No obstante, debo hacer correr el script bajo el proxy pues es requisito de mi trabajo. Entonces, ¿hay alguna solución para esto? He estado investigando a ver si con la librería MIME::Lite lograba hacerlo funcionar, pero no obtuve resultado.

¡Muchas gracias!
serdj
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2014-05-13 03:43 @196

Re: Cómo enviar un correo electrónico y que interprete HTML

Notapor explorer » 2014-06-17 05:23 @266

El primer mensaje de error indica que el proxy no te permite una conexión directa con el servidor de correo.

Y el segundo mensaje indica que el nombre de usuario y/o contraseña, no son correctos. Han de ser siempre las credenciales del usuario registrado en el servidor de correo al que nos conectamos.

En cuanto a la idea de usar un proxy para el correo, me temo que es una muy mala idea (ver primera respuesta).

Pero antes... ¿de qué proxy estamos hablando? Si se trata de un programa/equipo que está filtrando las conexiones, entonces es más bien un cortafuegos. Otra cosa distinta es un equipo que hace de SMTP Proxy, que realiza una segunda conexión SMTP al servidor destino.
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


Volver a Básico

¿Quién está conectado?

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