如何发送 UTF-8 电子邮件?
当我发送电子邮件时,电子邮件不会显示英语以外的字符。它确实显示如下:
ä1/2™ç“Ÿä»ä»
可能知道这是什么原因造成的?即使我试图在脚本中添加内容类型和字符集,它仍然显示相同的内容。
我用过Mail::Factory("mail");
当我发送电子邮件时,电子邮件不会显示英语以外的字符。它确实显示如下:
ä1/2™ç“Ÿä»ä»
可能知道这是什么原因造成的?即使我试图在脚本中添加内容类型和字符集,它仍然显示相同的内容。
我用过Mail::Factory("mail");
您可以添加标题“内容类型:文本/ html;字符集 =UTF-8“ 添加到邮件正文中。
$headers = "Content-Type: text/html; charset=UTF-8";
如果使用本机函数$headers数组将是第 4 个参数mail()
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);
}