我正在尝试通过 PHP 脚本发送多部分/替代 MIME 电子邮件......一切正常,但我在编码方面遇到了一些问题!电子邮件正文中的重音字符在邮件客户端中显示错误!如何对body进行编码来解决这个问题?...我试过用..
utf8_encode($body)
没有好的结果!
在一些原始格式的电子邮件中,我注意到重音被替换为 =XX(其中 XX 是字母数字字符)......我该怎么做?
提前致谢!
这是代码:
$header = "From: \n";
$header .= "Reply-To: \n";
$header .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body .= "\n".wordwrap($txt_body, 70);
$body .= "\n\n--$alt_boundary\n";
$body .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Type: text/html; charset=utf-8\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .= "\n".wordwrap($html_body, 70);
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"test file\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\test file\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .="\n$file";
$body .= "\n\n--$mixed_boundary--";
$body .= "\n\n--$alt_boundary--";
mail($to, $subject, $body, utf8_encode($header));
编辑:
$txt_body
和$html_body
是两个文件的内容:
$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);
在这些文件中,我替换了我通过 IPN 从 PayPal 收到的一些信息。我注意到,当我收到电子邮件时,只有 IPN 信息中出现的重音显示错误(换句话说,我在文件内容中替换的附加信息)!其他重音字符显示正确!!
我该如何解决这个问题?
解决了:
我已经解决了这个问题!utf8_encode() 函数必须仅适用于教皇信息变量,实际上是我尝试在 utf8 中编码 $txt_body ... paypal 变量在 utf8 中编码了 2 次。换句话说,我已经做到了:
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
而不是在 $txt_body 和 $html_body 我已经替换了通过 IPN 收到的信息!
感谢ererybody!