• Publicidad

Adjuntar un PDF usando sendmail

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

Adjuntar un PDF usando sendmail

Notapor Lor » 2010-02-03 13:19 @597

Tengo la siguiente función que genera un email y lo envía a destino, utilizando la librería sendmail. Desearía anexarle el envío de un PDF adjunto. ¿¿Cómo anexo el mismo??

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub enviar_email
  {
 
  my $mailprog = '/usr/lib/sendmail';
  my $origen = '[email protected]';
  my $destino ='[email protected]';

  my @texto_confirma =();
  my $linea = '';
  # ----- Texto del mail---------------------------
  push(@texto_confirma,"");
  push(@texto_confirma,"Texto cuerpo mensaje del email");
  push(@texto_confirma," texto cuerpo xx x x x x xx ......");
  push(@texto_confirma,"");
  open (MAIL, "|$mailprog $destino") || die "No puedo abrir $mailprog!\n";
  print MAIL "Reply-to: $origen\n";
  print MAIL "Subject:Titulo del mensaje. \n";
  print MAIL "From: $origen\n\n";

  foreach $linea (@texto_confirma){  print MAIL "$linea\n";   }
  close (MAIL);

  return 1;

  }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¡¡¡¡¡¡Muchas gracias!!!!!! :D
Última edición por explorer el 2010-02-03 13:30 @604, editado 1 vez en total
Razón: Ortografía, bloques de código, anglicismos
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Publicidad

Re: Adjuntar un PDF usando sendmail

Notapor explorer » 2010-02-03 13:46 @615

Pues... lleva un trabajo...

Debes convertir el fichero en base 64. Luego, en la cabecera del correo debes indicar que el contenido es de tipo múltiple, algo como esto:

Content-Type: multipart/mixed; boundary="===============1887506022=="

Luego, en el cuerpo, debes agregar tantas entradas como partes distintas tenga el mensaje. Lo normal es que exista un poco de texto, aparte del fichero adjunto. Te recomiendo que veas el código fuente de un correo con un adjunto para que veas cómo se pueden crear y separar esas partes.

Yo he escogido uno al azar y me sale esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
This is a multi-part message in MIME format.

--===============1887506022==
Content-Type: multipart/alternative;
        boundary="----=_NextPart_000_0007_01CAA402.25882650"
Content-Language: es-ar

This is a multi-part message in MIME format.

------=_NextPart_000_0007_01CAA402.25882650
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
que, curiosamente, indica otra forma de indicar las distintas partes del correo: de forma tradicional vale con separar las partes con la cadena indicada en la cabecera del correo, pero en este texto ves que se pueden tener subcontenidos, indicando otra línea de separación distinta de la principal.

Lo normal es que las partes se inicien así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
--===============1887506022==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En la parte del adjunto, codificada en base 64 (por ejemplo), metes el flujo de bytes del adjunto, poniendo una cabecera correcta (indicando que sea base 64). Y ya está... (puff)

Casi mejor si usas un módulo de Perl que te lo da todo hecho, como por ejemplo Email::Stuff:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Email::Stuff;

Email::Stuff->from     ('[email protected]'              )
            ->to       ('[email protected]'      )
            ->text_body('Te envío el documento PDF')
            ->attach   (filename => 'documento.pdf')
            ->send;
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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 un PDF usando sendmail

Notapor kidd » 2010-02-03 17:45 @781

También puedes probar con MIME::Entity
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Adjuntar un PDF usando sendmail

Notapor Lor » 2010-02-04 06:27 @310

¡¡¡¡¡¡ PERFECTO !!!!!! El módulo Email::Stuff me resultó muy bueno. ¡¡¡Solucionado!!!

Muchas gracias. :D
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282


Volver a Básico

¿Quién está conectado?

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