¿Cómo enviar un correo electrónico UTF-8?

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

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 = "info@x.com", $reply="info@x.com") { $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); }