php - para - ¿Cómo enviar un correo electrónico UTF-8?
enviar formulario a correo html5 (2)
Estoy usando un conjunto de caracteres bastante específico (ISO-8859-2) porque no todos los sistemas de correo (por ejemplo: http://10minutemail.com ) pueden leer correos UTF-8. Si necesitas esto:
function utf8_to_latin2($str)
{
return iconv ( ''utf-8'', ''ISO-8859-2'' , $str );
}
function my_mail($to,$s,$text,$form, $reply)
{
mail($to,utf8_to_latin2($s),utf8_to_latin2($text),
"From: $form/r/n".
"Reply-To: $reply/r/n".
"X-Mailer: PHP/" . phpversion());
}
He hecho otra función de correo, porque el dispositivo Apple no podía leer bien la versión anterior.
function utf8mail($to,$s,$body,$from_name="x",$from_a = "[email protected]", $reply="[email protected]")
{
$s= "=?utf-8?b?".base64_encode($s)."?=";
$headers = "MIME-Version: 1.0/r/n";
$headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">/r/n";
$headers.= "Content-Type: text/plain;charset=utf-8/r/n";
$headers.= "Reply-To: $reply/r/n";
$headers.= "X-Mailer: PHP/" . phpversion();
mail($to, $s, $body, $headers);
}
Cuando envío el correo electrónico, el correo electrónico no muestra caracteres que no sean inglés. Se muestra como a continuación:
ä½ ™ ç "Ÿä» ä »
¿Puede saber realmente qué causa esto? Incluso traté de agregar Content-type y charset en el script, todavía muestra lo mismo.
Usé Mail::Factory("mail");
Puede agregar el encabezado "Content-Type: text / html; charset = UTF-8" al cuerpo de su mensaje.
$headers = "Content-Type: text/html; charset=UTF-8";
Si usa la función de mail()
nativo mail()
, $ headers array será el 4to parámetro mail($to, $subject, $message, $headers)
Si usa el código de PEAR Mail :: factory () será:
$smtp = Mail::factory(''smtp'', $params);
$mail = $smtp->send($to, $headers, $body);