• Publicidad

Adjuntar xls a un correo

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

Adjuntar xls a un correo

Notapor audax » 2014-06-24 15:01 @667

Hola a todos.

Después de mucho buscar y no encontrar la solución, lo que me queda es preguntar y qué mejor que en el mejor sitio de Perl en español.

Bueno, mi tema es el siguiente: Deseo enviar un xls por correo, pero quiero agotar todas las opciones de la librería Mail::Sendmail. Yo logro enviar correo correctamente; bien hasta ahí. Pero no he podido encontrar la opción para adjuntar un archivo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use Mail::Sendmail;
  4.  
  5. my $archivo = "C:\\xxx\\archivo.xlsx";
  6.  
  7. %mail = (smtp    => 'xxx.xx.x.xx:25',
  8.          to      => '[email protected]',
  9.          from    => '[email protected]',
  10.          subject => 'Test!',
  11.          message => 'Mensaje de Prueba',
  12. );
  13. sendmail(%mail) or die;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Les agradecería un montón su ayuda.
Saludos,
audax
Perlero nuevo
Perlero nuevo
 
Mensajes: 56
Registrado: 2013-06-03 13:16 @594

Publicidad

Re: Adjuntar xls a un correo

Notapor explorer » 2014-06-24 16:16 @719

En este foro ya hemos hablado alguna vez sobre el tema de adjuntar archivos a un correo. Casi siempre pasa por usar algún módulo para crear partes MIME.

En la propia página de manual de Mail::Sendmail te lleva a la página del FAQ, y entre las más frecuentes está la de How to send attachments?

Inténtalo. Si tienes algún problema, avísanos.

Aquí tienes un ejemplo muy sencillo, usando MIME::Entity. Y otro mucho más completo.
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: Adjuntar xls a un correo

Notapor audax » 2014-06-25 08:30 @396

explorer, muchas gracias, amigo.

Al final sí me sirvió pero con el ejemplo de MIME::Entity.

En un principio usando Mail::Sendmail la solución la vi bien compleja, ya que había que guardar el archivo con una codificación diferente, etc. Eso me pareció engorroso. Cambié a la librería Email::Stuff. Con ésta sí pude enviar archivo, pero me enviaba el xls sin imágenes el cual no pude saber el porqué. Y luego probé con el ejemplo que mencionastes usando MIME::Entity y envió el archivo en excelentes condiciones. Con esto ya puedo dormir tranquilo. Funcionó de mil maravillas.

Muchas gracias, explorer, por tu ayuda desinteresada.

Saludos,
audax
Perlero nuevo
Perlero nuevo
 
Mensajes: 56
Registrado: 2013-06-03 13:16 @594

Re: Adjuntar xls a un correo

Notapor audax » 2014-07-11 09:53 @453

Hola nuevamente.

Sobre este mismo tema me apareció un problema. Resulta que pude enviar correos dentro del mismo dominio, pero no los puedo enviar, por ejemplo, a direcciones de afuera, como Gmail. ¿Me pueden ayudar, por favor, para saber qué pasa? Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $msg = MIME::Lite->new(
  2.         From    => '[email protected]',
  3.         To      => '[email protected]',
  4.         Subject => 'Prueba...',
  5.         Type    => 'multipart/mixed'
  6.     );
  7.  
  8.  
  9.         $msg->attach(
  10.         Path     => 'Temp/Test.xls',
  11.         Type     => 'application/msword',
  12.         Encoding => 'base64',
  13.         );
  14.  
  15.     ### use Net:SMTP to do the sending
  16.     $msg->send('smtp','MidominioMail.net', Debug=>1 );    
  17.  
  18.  
  19.  
  20.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Edito:
Pude activarle un Debug y me sale esto:

MIME::Lite::SMTP=GLOB(0x247ea5c)>>> RCPT TO:<[email protected]>
MIME::Lite::SMTP=GLOB(0x247ea5c)<<< 550 5.7.1 Unable to relay
SMTP recipient() command failed:
5.7.1 Unable to relay


No entiendo qué pasa. ¿Me pueden ayudar, por favor? Muchas Gracias de antemano.

Saludos.
audax
Perlero nuevo
Perlero nuevo
 
Mensajes: 56
Registrado: 2013-06-03 13:16 @594

Re: Adjuntar xls a un correo

Notapor explorer » 2014-07-11 13:08 @589

El mensaje de error es devuelto por el servidor de correo. Dice que no admite el reenvío de correos externos a tu red de forma libre.

Eso quiere decir que debes autenticarte en el servidor de correo para que él te reconozca como usuario legítimo, y así poder recoger tu correo y luego reenviarlo al exterior.

Como estás usando el MIME::Lite, debes agregarle las opciones AuthUser y AuthPass en la línea del send().

Tienes más información y ejemplos en la página de manual de MIME::Lite. Busca por la palabra 'AuthUser'.
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: Adjuntar xls a un correo

Notapor audax » 2014-07-11 13:59 @624

Estimado: le prendo velitas por la gran ayuda. Era justo lo que comentas del problema. Al final la línea del send() queda así:

$msg->send('smtp','MidominioMail.net' , AuthUser=>"user", AuthPass=>"pass" );

Además me pidió instalar las librerías MIME::Base64 y Auten::SASL para que funcionara satisfactoriamente, y lo menciono por si alguien más tiene algún problema parecido.

explorer: reitero mis agradecimientos.

Saludos.
audax
Perlero nuevo
Perlero nuevo
 
Mensajes: 56
Registrado: 2013-06-03 13:16 @594


Volver a Básico

¿Quién está conectado?

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