• Publicidad

Enviar archivo por email con perl(windows)

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

Enviar archivo por email con perl(windows)

Notapor Txemaracas » 2011-07-11 12:17 @553

Hola, me gustaría saber cómo enviar un archivo a varias personas por e-mail desde Perl. Estado mirando algunos temas que se han publicado pero aparte de que no tengo muy claro cómo hacerlo me gustaría saber cuál es el mejor módulo hasta el momento para realizarlo. ¿El módulo MIME::Entity sería la mejor opción?
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Publicidad

Re: Enviar archivo por email con perl(windows)

Notapor natxo » 2011-07-11 14:51 @660

Cuando he tenido que enviar adjuntos por correo he usado el módulo MIME::Lite, muy sencillito de usar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     use MIME::Lite;
  2.     my $msg = MIME::Lite->new(
  3.         From        =>  '[email protected]',
  4.         To          =>  '[email protected]',
  5.         Subject     =>  "Tema del mensaje",
  6.         Type        =>  'multipart/mixed',
  7.     );
  8.     $msg->attach(
  9.         Type        =>  'TEXT',
  10.         Data        =>  "Cuerpo del mensaje que puedes guardar en una variable, por ejemplo",
  11.     );
  12.     $msg->attach(
  13.         Type        =>  'image/gif',
  14.         Path        =>  "/tmp/archivo.gif",
  15.         Filename    =>  "nombredelarchivo",
  16.     );
  17.     $msg->send();
  18.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Para enviarlo a varias personas tienes varias opciones. Puedes crear una lista de direcciones en tu programa e ir enviando un mensaje a cada dirección en un bucle. También puedes (si tienes acceso a un servidor de correo), crear un alias en el servidor que distribuya el correo a todas las direcciones, entonces sólo necesitas enviar el correo al alias y el servidor se encarga de distribuirlo a las distintas direcciones. O puedes crear una lista de correo. Las dos últimas opciones nada tienen que ver con Perl, evidentemente.
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Re: Enviar archivo por email con perl(windows)

Notapor explorer » 2011-07-11 17:59 @791

Hay varios módulos para enviar correo. Yo he usado Email::Simple, Email::Simple::Creator y Email::Sender::Simple recientemente para crear y enviar correo, pero hay módulos más modernos.

Por ejemplo, uno de los últimos es Email::Stuff, que sirve para enviar correos de forma muy simple. Internamente, este módulo usa Email::MIME y Email::Send.

Para enviar un correo a varias personas, puedes agregar todas sus direcciones de correo, separadas por comas, en el campo Cc. O si no quieres que cada receptor del mensaje sepa a quienes más has enviado la carta, usa el campo Bcc. Será luego tu gestor de correo el que se encargue de hacer y enviar las copias.

MIME::Lite también te permite poner campos Cc y Bcc. Mira el ejemplo que viene en la sinopsis de MIME::Lite y verás que en el campo Cc hay indicadas dos direcciones.
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 archivo por email con perl(windows)

Notapor Txemaracas » 2011-08-18 10:57 @498

Vale, usando el Email::Stuff he visto que el código sería algo así. Pero yo quiero mandar un archivo ¿Debería ponerlo en el apartado de attach? ¿Reconoce hotmail o tengo que configurar algo para eso?


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin
  2. use strict;
  3. use Email::Stuff;
  4.  
  5.  
  6.   # Create and send the email in one shot
  7.   Email::Stuff->from     ('[email protected]')
  8.               ->to       ('[email protected]')
  9.               ->bcc      (                   )
  10.               ->text_body(  "Hola  que tal?" )
  11.               ->attach   (io('dead_bunbun_faked.gif')->all,
  12.                           filename => 'dead_bunbun_proof.gif')
  13.               ->send;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Enviar archivo por email con perl(windows)

Notapor Txemaracas » 2011-08-19 07:20 @347

Hola. Con el ejemplo que ha puesto natxo he intentado enviar esto tal cual, pero me dice:

"SMTP Failed to connect to mail server: Bad faile descriptor at line 15."


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin
  2. use strict;
  3. use MIME::Lite;
  4.  
  5.     my $msg = MIME::Lite->new(
  6.         From        =>  '[email protected]',
  7.         To          =>  '[email protected]',
  8.         Subject     =>  "Hola!!",
  9.         Type        =>  'multipart/mixed',
  10.     );
  11.     $msg->attach(
  12.         Type        =>  'TEXT',
  13.         Data        =>  "Que tal ? te ha llegado el mensage?",
  14.     );
  15.     $msg->send();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Enviar archivo por email con perl(windows)

Notapor natxo » 2011-08-19 08:09 @381

No sé, he probado tu código sin el HTML de las direcciones de correo y a mí me funciona (lo uso en Linux, no en Windows).

¡Ajá!, he verificado el problema en un Windows. Mirando la documentación del módulo (http://search.cpan.org/~rjbs/MIME-Lite- ... ME/Lite.pm):

And, if you're not on a Unix system, or if you'd just rather send mail some other way, there's always SMTP, which these days probably requires authentication so you probably need to say

MIME::Lite->send('smtp', "smtp.myisp.net",
AuthUser=>"YourName",AuthPass=>"YourPass" );


El problema es que los equipos con Windows no tienen un servidor SMTP de serie, el /usr/bin/sendmail que tienen todos los servidores UNIX/Linux. Así que tienes que añadir los datos de tu servidor SMTP para poder enviar el mensaje.
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Re: Enviar archivo por email con perl(windows)

Notapor explorer » 2011-08-19 11:56 @539

Para Windows, existe el ejecutable Blat que realiza una operación similar a sendmail.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. qx(blat $filename -s "$Form_subject_user" -i "$Owner_name <$Owner_email>" -server $SMTP_servidor -u $SMTP_usuario -pw $SMTP_password -f $Enquiry_email -t $User_email -b "$Ekomi_email");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero, sí, muchas veces es más cómodo indicar el servidor SMTP externo y dialogar con él de forma directa.

En el caso de usar Email::Stuff, hay que usar el método using() para indicar la forma de acceso:

using('SMTP', Host => 'smtp.servidor.org', username => 'Pollo', password => 'Poxa');
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 archivo por email con perl(windows)

Notapor Txemaracas » 2011-08-25 07:29 @353

Vale, a ver. En principio usaré MIME::Lite. He estado mirando la página donde aparece este módulo en CPAN y como nunca he hecho nada de mandar mensajes pues tengo dudas.

1) Como me dijo Natxo tengo que añadir los datos de mi servidor. Por ejemplo, hotmail. En CPAN aparece que se debería definir en la última línea, ¿no?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.   ### Create a new multipart message:
  2.     $msg = MIME::Lite->new(
  3.         From    => '[email protected]',
  4.         To      => '[email protected]',
  5.         Cc      => '[email protected], [email protected]',
  6.         Subject => 'A message with 2 parts...',
  7.         Type    => 'multipart/mixed'
  8.     );
  9.  
  10.     ### Add parts (each "attach" has same arguments as "new"):
  11.     $msg->attach(
  12.         Type     => 'TEXT',
  13.         Data     => "Here's the GIF file you wanted"
  14.     );
  15.     $msg->attach(
  16.         Type     => 'image/gif',
  17.         Path     => 'aaa000123.gif',
  18.         Filename => 'logo.gif',
  19.         Disposition => 'attachment'
  20.     );
  21.     ### use Net:SMTP to do the sending
  22.     $msg->send('smtp','some.host', Debug=>1 );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


pero ¿cómo debería definirlo? ¿Cómo sé cuál es el SMTP de hotmail, por ejemplo o el de cualquier dirección de mensajería? He mirado en Internet y pone que para hotmail es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
   mx1.hotmail.com
   mx2.hotmail.com
   mx3.hotmail.com
   mx4.hotmail.com
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


2) ¿Qué más datos necesitaría para realizar la configuración del servicio?
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Enviar archivo por email con perl(windows)

Notapor explorer » 2011-08-25 09:04 @419

1) Debes poner uno de esos servidores de correo como segundo argumento del método send().

2) Te falta por indicar el nombre de usuario y contraseña para identificarte frente al servidor de correo. Quedaría algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $msg->send('smtp', 'el.servidor.de.correo', AuthUser => 'nombre de usuario', AuthPass => 'contraseña', Debug => 1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


P.D. Extraído del último ejemplo de la sinopsis de MIME::Lite.
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 archivo por email con perl(windows)

Notapor Txemaracas » 2011-08-25 09:23 @432

Vale el nombre de usuario y la contraseña se referiría a :

- usuario: mi dirección de correo([email protected])

- password: pepe
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Siguiente

Volver a Básico

¿Quién está conectado?

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