Saludos foreros. Estoy haciendo un poco de I+D+i con php, y he llegado al envío de de un correo con el texto en html y con un archivo de Excel como adjunto. Como de vez en cuando se pregunta en el foro por el envío de correo desde el I5, abajo os copio el código del ejemplo, por si alguien más quiere probar. Lo único necesario es tener el Zend core instalado en el I5.

El hecho de poder exportar un archivo binario marca la diferencia con nuestra utilidad de envío de correo, que solamente permite mandar archivos de texto (he visto algunas por ahí que en teoría lo soportan, pero a mi no me han funcionado).

El fichero exportado es /export/Fernando/primitiva.xls, situado en el IFS.

Ahora solo me falta algo para generar documentos excel (o csv, en su defecto). No creo que me cueste demasiado encontrar algo por ahí. Uniendo esto a que se puede ejecutar un script de php desde la línea de comandos (y por ende, desde cualquier programa), la cosa se pone interesante.

Para crear el ejemplo me he basado en estos dos enlaces :

http://www.programacionweb.net/foros/mensaje/?num=1344
http://rinconastur.net/php/php64b.php

Y aquí está el código. Ciertamente no está muy cuidado, pero es que es de I+D+i  ;):


<?php
$cabeceras = "From: [email protected]\r\ncontent-type: text/html\r\n";

$file = fopen("/export/Fernando/primitiva.xls", "r");
$contenido = fread($file, filesize("/export/Fernando/primitiva.xls"));
$encoded_attach = chunk_split(base64_encode($contenido));
fclose($file);
 
$asunto="Enviar un correo con fichero adjunto";
 
$cabeceras = "From: [email protected]\r\n";
$cabeceras .= "MIME-version: 1.0\r\n";
$cabeceras .= "Content-type: multipart/mixed; ";
$cabeceras .= "boundary=\"Message-Boundary\"\r\n";
$cabeceras .= "X-attachments: primitiva.xls";
 
$body_top = "--Message-Boundary\r\n";
$body_top .= "Content-type: text/html\r\n";
$body_top .= "Content-description: Mail message body\r\n\r\n";
 
$cuerpo = $body_top."<p>Holaa</p><strong>Esto va en negrita</strong>";
 
$nombref="primitiva.xls" ;
$cuerpo .= "\r\n\r\n--Message-Boundary\r\n";
$cuerpo .= "Content-type: application/vnd.ms-excel; name=\"$nombref\"\r\n";
$cuerpo .= "Content-Transfer-Encoding: BASE64\r\n";
$cuerpo .= "Content-disposition: attachment; filename=\"$nombref\"\r\n\r\n";
$cuerpo .= "$encoded_attach\r\n";
$cuerpo .= "--Message-Boundary--\r\n";
 
if (!mail("[email protected]", $asunto, $cuerpo, $cabeceras)) {
    echo("<p>Error en mail</p>");
} else echo("<P>Mail correcto</p>");


?>
--
Saludos.

Fernando Pérez 

Cerámica Saloni. Dpto. Organización

begin:vcard
fn;quoted-printable:Fernando P=C3=A9rez
n;quoted-printable:P=C3=A9rez;Fernando
org;quoted-printable:;Auditor=C3=ADa y Organizaci=C3=B3n
email;internet:[email protected]
tel;work:Ext. 627
x-mozilla-html:TRUE
version:2.1
end:vcard

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&amp;#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a