Como enviar mensajes HTML largos con PHP (funcion mail)

Después de dos días dando vueltas como un loco por foros, blogs y manuales, he dado por fin con una función que permite enviar correos electrónicos en formato HTML sin importar el tamaño. En mi caso, cuando tenía que enviar bastantes fotos no enviaba el mensaje, por lo que empecé a investigar y descubrí que el estandar RFC2822 sólo permite 998 caracteres por linea y por lo tanto, dado que enviaba bastantes más caracteres fallaba. Para solucionar este problema basta con incluir la codificación base64 en el header del mensaje :

“Content-Transfer-Encoding: base64\r\n”

y después codificarlo y partirlo en bonitos trozos antes de enviarlo:

chunk_split(base64_encode($content))

La función, que no es mía, la encontré aquí y la explicación al problema aquí. Y aquí la función:

<?php

// Example

$HTML         = “<b>This is a test</b>”;
$from         = “test@test.com”;
$to           = “this@that.com”;
$subject     = “I’m sending a test HTML email”;

sendHTMLemail($HTML,$from,$to,$subject);

function sendHTMLemail($HTML,$from,$to,$subject)
{
// First we have to build our email headers
// Set out “from” address

$headers = “From: $from\r\n”;

// Now we specify our MIME version

$headers .= “MIME-Version: 1.0\r\n”;

// Create a boundary so we know where to look for
// the start of the data

$boundary = uniqid(“HTMLEMAIL”);

// First we be nice and send a non-html version of our email

$headers .= “Content-Type: multipart/alternative;”.
“boundary = $boundary\r\n\r\n”;

$headers .= “This is a MIME encoded message.\r\n\r\n”;

$headers .= “–$boundary\r\n”.
“Content-Type: text/plain; charset=ISO-8859-1\r\n”.
“Content-Transfer-Encoding: base64\r\n\r\n”;

$headers .= chunk_split(base64_encode(strip_tags($HTML)));

// Now we attach the HTML version

$headers .= “–$boundary\r\n”.
“Content-Type: text/html; charset=ISO-8859-1\r\n”.
“Content-Transfer-Encoding: base64\r\n\r\n”;

$headers .= chunk_split(base64_encode($HTML));

// And then send the email ….

mail($to,$subject,””,$headers);

}

?>

 

Te podría interesar:

  1. Como enviar posts de Google Reader a Google Calendar Aunque Google Reader ya dispone de diferentes opciones para guardar...
  2. Como sincronizar Railendar con Google Calendar (Windows) Desde hace un tiempo vengo utilizando Rainlendar, un completo calendario...
  3. Nuevo en Google Labs : No más mensajes que no deseabas haber enviado A todos nos ha pasado que, después de una buena...
  4. Mail al futuro Si tienes alguna cosa que no te gusta de ti,...

Publicaciones relacionadas que recibes por Yet Another Related Posts Plugin.

Un comentario en “Como enviar mensajes HTML largos con PHP (funcion mail)”

  1. Pingback: Bitacoras.com

Comentarios cerrados.