A ver si alguien me puede hechar una ayudita...
Estoy probando un codigo para enviar un mail con un archivo adjunto. Además este mail es del tipo multipart/alternative, para tener disponible una version de texto plano y una version de texto html para el mensaje.
El problema es que no logro hacer que el mail muestre el texto del mensaje y el archivo adjunto. Al parecer ésta es la línea que me trae problemas:
$body.= "--$separador--\r\n\r\n";
Con esa linea, el mail solo me muestra el texto, pero hace como si nunca le hubiera llegado el archivo adjunto. Si quito esos dos guiones del principio, el cuerpo del mail llega completo ($body), pero el mail no me muestra el texto, solo el archivo adjunto.
pd: he comparado el código con varias classes que hacen lo mismo y no veo mayor diferencia, no sé que pueda estar fallando.
Código:
<?php $separador = md5(time()); $headers.= "Content-Type: multipart/mixed;\r\n"; $headers.= " boundary=\"$separador\"\r\n\r\n"; //Encabezado multipart/alternative $body.= "--$separador\r\n"; $body.= "Content-Type: multipart/alternative;\r\n"; $body.= " boundary=\"$separador\"\r\n\r\n"; //alternativa texto plano $body.= "--$separador\r\n"; $body.= "Content-Type: text/plain; charset=iso-8859-1; format=flowed\r\n"; $body.= "Content-Transfer-Encoding:Quoted-printable\r\n\r\n"; $body.= strip_tags("El <b>mensaje</b>")."\r\n"; //Alternativa HTML $body.= "--$separador\r\n"; $body.= "Content-Type: text/html; charset=iso-88-59-1\r\n"; $body.= "Content-Transfer-Encoding:Quoted-printable\r\n\r\n"; $body.= "El <b>mensaje</b>\r\n"; $body.= "--$separador--\r\n\r\n"; //Archivo adjunto $body.= "--$separador\r\n"; $body.= "Content-Type: image/gif;\r\n"; $body.= " name=\"habanero.gif\"\r\n"; $body.= "Content-Transfer-Encoding:base64\r\n"; $body.= "Content-Disposition:inline;\r\n"; $body.= " filename=\"habanero.gif\"\r\n\r\n"; $fp = fopen("habanero.gif", "r"); $buff = fread($fp, filesize("habanero.gif")); fclose($fp); $body.= chunk_split(base64_encode($buff))."\r\n"; $body.= "--$separador--"; mail("[email protected]", "Prueba", $body, $headers); ?>
pd: otro codigo, para enviar el mail solo como texto plano más un archivo adjunto me ha funcionado perfecto, pero no logro hacer funcionar este que envia un mail multipart/alternative