Foros del Web » Programando para Internet » PHP »

Mail con attachment

Estas en el tema de Mail con attachment en el foro de PHP en Foros del Web. Que tal gentes!! A ver si alguien me puede hechar una ayudita... Estoy probando un codigo para enviar un mail con un archivo adjunto. Además ...
  #1 (permalink)  
Antiguo 04/03/2005, 12:42
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Mail con attachment

Que tal gentes!!

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
__________________
El conocimiento es libre: Movimiento por la Devolución

Última edición por frijolerou; 04/03/2005 a las 12:48
  #2 (permalink)  
Antiguo 04/03/2005, 13:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por mi parte ... no me lio hacerlo "a mano" .. uso la classe:

PHP Mailer
http://phpmailer.sourceforge.net

Te soluciona "la vida" para el tema de enviar e-mails con PHP .. incluye métodos para enviar archivos adjuntos .. con parte en HTML y texto plano .. imagenes incrustradas en el mail en HTML .. envio por SMTP directo o por sendmail directo (o incluso usando mail() original de PHP ... ) etc ..etc.

Un saludo,

PD: No recibo comisión por mencionar esta classe xDD.
  #3 (permalink)  
Antiguo 04/03/2005, 14:14
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas gracias por la casse cluster!!! Me viene genial!!! Todo un detalle ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.