Thunderbird no entiende mail generado PHP mail(). mail blanco/vacío.

B

Estoy realizando un formulario web en html que envía un email por php. Este puede o no tener un archivo adjunto y hago su validación previa y tal.
La cosa es que si hago un envío con con un content-type text/html para los datos del formulario no hay problema, o si envío solo el adjunto como application/octet-stream también se envía sin problema.
Pero no consigo que cuando envío las dos cosas con un content-type multipart/mixed, thunderbird lo abra correctamente. Sale con el cuerpo del mensaje blanco y el adjunto a 0 bytes, pero lees el código fuente y está todo ahí.
Ojo, lo raro es que abro ese email en el webmail que funciona con java y se lee perfectamente, entonces no entiendo nada...

$header = "MIME-Version: 1.0\r\n";
$header .= "From: " . $_POST['from'] . "\r\n";
$header .= "Content-type: multipart/mixed; boundary=\"Prueba123\"\r\n";

$message = "This is multipart message using MIME\r\n";

$message .= "--Prueba123\r\n";
$message .= "Content-type: text/html; charset=UTF-8\r\n";
$message .= "Content-Transfer-Encoding: 64base". "\r\n";
$message .= $html . "\r\n";

$message .= "--Prueba123\r\n";
$message .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"\r\n";
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-Disposition: attachment\r\n";
$message .= $content . "\r\n";

$message .= "--Prueba123--";

mail($to, $subject, $message, $header);

Resumiendo es algo así, me estoy volviendo ya loco... No tengo el código real ni el código fuente del email para ver todo en detalle, pero actualizaré cuando lo tenga. La cosa es ver si alguien sabe ayudarme en algo o si no estoy haciendo bien la estructura del multipart.

PD: Descartado usar algo que no sea php puro y la función mail montando yo mis headers. Es decir, nada de PhpMail y esas cosas.

✅ Solución en #2

KTd3n

Prueba con esto: https://stackoverflow.com/questions/40755359/multipart-mixed-not-working-in-thunderbird-and-hotmail-but-gmail

A poner otro salto de linea entre estas dos lineas :

$message .= "Content-Disposition: attachment\r\n";
$message .= $content . "\r\n";

1 2 respuestas
B

#2 Qué absurdo sería eso, y siendo algo de 2016 que siga siendo por eso.

Gracias, probaré mañana y os comento.

B

#2 Dios ha funcionado! Muchas gracias!
Menuda gilipollez! Y me he tirado una hora mirando qué cojones podía pasar y me parecía que iba todo perfecto!
Muchas gracias!

1 respuesta
KTd3n

#4 Jajjajajaja Php things, era de esperar xD
Nada tio :)

Usuarios habituales