+34 911 599 883

+34 911 895 172

Mi servidor de correo añade espacios y “%20” al contenido HTML de los mails que envía

Los servidores de correo tienen un límite de 990 caracteres en cada línea contenida en un mensaje de correo electrónico. Si se envía un mensaje de correo electrónico que contiene líneas de más de 990 caracteres , esas líneas se subdividen por caracteres de final de línea adicionales oespacios aleatoriamente , que pueden causar la corrupción en el mensaje de correo electrónico , en particular para el contenido HTML (formato o enlaces indistintamente).

Para evitar este comportamiento erróneo se puede usar la funcion wordwrap (http://php.net/manual/es/function.wordwrap.php de php (AVISO: No respeta la codificación en UTF-8 DE LOS TEXTOS).

Para conseguir el mismo efecto pero respetando la codificación de nuestros textos en UTF-8 podemos utilizar la siguinete función que si respeta el formato UTF-8 de los textos (la siguiente funcion es la que hace que se respeten los caracteres de estos textos : mb_substr($actual, 0, $width, “UTF-8”) ).

 

function mb_wordwrap($str, $width = 75, $break = “\n”, $cut = false) {
$lines = explode($break, $str);
foreach ($lines as &$line) {
$line = rtrim($line);
if (mb_strlen($line) <= $width)
continue;
$words = explode(‘ ‘, $line);
$line = ”;
$actual = ”;
foreach ($words as $word) {
if (mb_strlen($actual.$word) <= $width)
$actual .= $word.’ ‘;
else {
if ($actual != ”)
$line .= rtrim($actual).$break;
$actual = $word;
if ($cut) {
while (mb_strlen($actual) > $width) {
$line .= mb_substr($actual, 0, $width, “UTF-8”).$break;
$actual = mb_substr($actual, $width, “UTF-8”);
}
}
$actual .= ‘ ‘;
}
}
$line .= trim($actual);
}
return implode($break, $lines);
}