当我发送电子邮件时,邮件中显示的字符除英语外都没有显示出来。 它显示如下:
余生ä»ä»
可能知道这是什么原因吗? 即使我尝试在脚本中添加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);
mail()
函数的第四个参数是字符串,而不是数组。 - Vladimir PanteleevUTF-8
周围不加引号写上charset=UTF-8
! - Mel_Ttext/html
。对于纯文本电子邮件,你需要使用 text/plain
。 - Stewart我使用了相对特定的字符集(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);
}
'=?utf-8?Q?' . quoted_printable_encode($string) . '?='
- Quoting Eddie=?utf-8?b?=
是什么意思的人,请参见 https://ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject/ 了解详情。 - Patanjali$headers['Content-Type']='text/html; charset=UTF-8';
$body='<html><head><meta charset="UTF-8"><title>ESP Notufy - ESP Сообщения</title></head><body>'.$text.'</body></html>';
$mail_object=& Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail_object->send($recipents, $headers, $body);
}
mail()
还是Zend_Mail
或者PHPMailer
?需要一些工厂方法的代码! - Wesley van Opdorp$mail = Mail::factory("mail"); $to = "me@abc.com"; $body = "好信"; $headers = array( "Content-type" => "text/plain; charset=\"UTF-8\"", "From" => "abc@abc.com", "To" => "me@abc.com", "Subject" => "测试发送中文邮件-好信" ); $mail->send($to, $headers, $body);
这个代码正确吗?它没有显示我期望的内容。它应该在邮件正文、标题或者头部显示出中文字符。 - deepWebMie