Php 为什么在使用非英语字符发送电子邮件时,某些字符会显示为问号?
我尝试使用PHPsPhp 为什么在使用非英语字符发送电子邮件时,某些字符会显示为问号?,php,email,encoding,character-encoding,Php,Email,Encoding,Character Encoding,我尝试使用PHPsmail功能发送非英语字符的文本电子邮件。但是,我的信息中却出现了滑稽的垃圾角色。我怎么修理它 我使用这段代码: function _mail($to, $subject, $content) { $headers = 'From: info@example.com' . "\r\n" . 'Reply-To: info@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to,
mail
功能发送非英语字符的文本电子邮件。但是,我的信息中却出现了滑稽的垃圾角色。我怎么修理它
我使用这段代码:
function _mail($to, $subject, $content)
{
$headers = 'From: info@example.com' . "\r\n" .
'Reply-To: info@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $content, $headers);
}
有些角色被打成问号…这绝对是Joel文章的一个例子
在成功解决此问题之前,您必须了解字符编码的作用。这样的邮件包装器可能会对您有所帮助。您可能需要签出关键是使用UTF-8字符集 添加
内容类型:text/html;charset=UTF-8
,MIME版本1.0
和内容传输编码:引用可打印到邮件头,如下所示:
$headers = 'From: info@example.com' . "\r\n" .
'Reply-To: info@example.com' . "\r\n" .
'Content-Type: text/html; charset=UTF-8' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-Transfer-Encoding: quoted-printable' . "\r\n" .
'X-Mailer: PHP/' . phpversion(); // Why would you want to send this header?
如果要使用HTML而不是文本,还需要在(X)HTML邮件的标题中添加META
标记:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
请告诉我们您尝试了什么?一个小测试消息的结果,包括它的头?(看你是否不知道我的意思。)可能是真的,但不是真的对IMHO问题的答案;更像是指向正确方向的指针。@Mathias,这超出了我在给出原始问题时所能想到的范围…;-)您还需要MIME版本:1.0
和to内容传输编码:quoted printable
正文,因为UTF-8字符通常不会完整地通过邮件系统。但是,显然,当使用quoted printable时,邮件也应该这样编码。