Problemas con tildes y acentos en el Subject utilizando HtmlMimeMail
Marzo 29th, 2010 by David Rodriguez
Encontramos un bug en la clase HtmlMimeMail, donde si utilizabas dos palabras seguidas con tildes en el asunto del mensaje a enviar, el programa juntaba ambas palabras.
Esto pasaba por la codificación de caracteres que se puede ver con este ejemplo:
Asunto: … Carné de Especialista en Instalación de Tuberías Plásticas …
La codificación de caracteres enviada era la siguiente:
Subject: =?ISO-8859-1?Q?Carn=E9?= de Especialista en =?ISO-8859-1?Q?Instalaci=F3n?= de =?ISO-8859-1?Q?Tuber=EDas?= =?ISO-8859-1?Q?Pl=E1sticas?=
Donde podemos observar que el espacio entre esas palabras no lo codificaba bien.
Para solucionar este problema, simplemente hay que hacer los siguientes cambios en la función _encodeHeader de la clase htmlMimeMail:
function _encodeHeader($input, $charset = ‘ISO-8859-1′) {
preg_match_all(‘/(\w*[\x80-\xFF]+\w*)/’, $input, $matches);
$codex = 0 ;
foreach ($matches[1] as $value) {
$codex = 1;
$replacement = preg_replace(‘/([\x80-\xFF])/e’, ‘”=” . strtoupper(dechex(ord(“\1″)))’, $value);
$input = str_replace($value, ‘=?’ . $charset . ‘?Q?’ . $replacement . ‘?=’, $input);
}
if ($codex==1)
$input = str_replace(‘ ‘,’=?’ . $charset . ‘?Q?’ . ‘=20′ . ‘?=’, $input);
return $input;
}
De esta forma solucionamos el problema. Hemos encontrado la solución en esta pagina.
Category: Internet, Programacion | No Comments »