如何发送UTF-8电子邮件?

当我发送电子邮件时,电子邮件不会显示英文以外的其他字符。 它确实显示如下:

ä½™C”雅»ä»

可能知道这是什么原因? 即使我试图在脚本中添加Content-type和charset,它仍然显示相同。

我使用Mail::Factory("mail");

你可以添加标题“Content-Type:text / html; charset = UTF-8”到你的邮件正文。

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

如果你使用本地mail()函数$ headers数组将是第四个参数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()); } 

我已经做了另一个邮件函数,因为苹果设备不能很好地读取以前的版本。

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