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);

}

?>

 

Diferencias entre Para: CC: y CCo:

Esta mañana he recibido un correo electrónico anunciándome el cambio de domicilio social de una empresa, nada raro hasta aquí. El problema es que, cuando lo he abierto me he encontrado con esto:

Click en la imagen para ampliar

Es realmente increible que a las alturas en las que estamos, en la que muchísima gente utiliza el correo electrónico, nadie o poca gente utilice la copia oculta (CCo).

Con lo bien que queda personalizar los mails a nivel de empresa, la gente aún se empeña en enseñar cuantos clientes tiene, o cuantos amigos, o yo qué sé…