Как отправить электронную почту UTF-8?

Когда я отправляю электронное письмо, в письме не отображаются символы, кроме английского. Он показывает, как показано ниже:

ä½ ™ ç»Ya» ä »

Может знать, на самом деле это причина? Даже я пытался добавить Content-type и charset в скрипт, он все равно показывает то же самое.

Я использовал Mail::Factory("mail");

Solutions Collecting From Web of "Как отправить электронную почту UTF-8?"

Вы можете добавить в свой текст сообщение «Content-Type: text / html; charset = UTF-8».

 $headers = "Content-Type: text/html; charset=UTF-8"; 

Если вы используете функцию native mail() $ headers array будет четвертым параметром mail($to, $subject, $message, $headers)

Если пользователь PEAR Mail :: factory () будет:

 $smtp = Mail::factory('smtp', $params); $mail = $smtp->send($to, $headers, $body); 

Я использую довольно определенную кодировку (ISO-8859-2), потому что не каждая почтовая система (например: http://10minutemail.com ) может читать письма UTF-8. Если вам это нужно:

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

Я сделал еще одну функцию почтовой программы, потому что устройство Apple не могло хорошо читать предыдущую версию.

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