我尝试使用PHP 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);
}
有些角色出问题......
答案 0 :(得分:5)
这绝对是Joel的文章The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)的案例。
在成功解决此问题之前,您必须先了解字符编码的作用。
答案 1 :(得分:3)
Swiftmailer等邮件包装可能会对您有所帮助。
答案 2 :(得分:2)
关键是使用UTF-8字符集。
将Content-Type: text/html; charset=UTF-8
,MIME-Version 1.0
和Content-Transfer-Encoding: quoted-printable
添加到邮件标题中,如下所示:
$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
中添加HEAD
标记:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
答案 3 :(得分:1)
您可能需要查看PEAR's MAIL_MIME