PHP Mail:Firefox和IE之间的特殊字符显示不同

时间:2011-05-13 16:44:52

标签: php email browser special-characters

使用PHP Mail功能通过电子邮件发送表单时出现问题。这是我正在使用的代码:

$name  = $_POST['name'];
$last_name  = $_POST['last_name'];
$company  = $_POST['company'];
$email = $_POST['email'];
$country = $_POST['country'];
$phone = $_POST['phone'];
$message = $_POST['message']); //This comes from the form

$formcontent="Name: $name $last_name <br> Company: $company <br> Email: $email <br> Country: $country <br> Telephone: $phone <br><br> Message: $message";

$mailheader  = 'MIME-Version: 1.0' . "\r\n";
$mailheader .= 'Content-type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable' . "\r\n";
$mailheader .= 'From: ' . $email . "\r\n";

mail("my@email.com", "subject", $formcontent, $mailheader) or die("Error!");

这是一个发送西班牙语和特殊字符的表单,如ñ,重音符号,ç等...

问题在于,如果我这样使用它,它在Firefox 3.6.3中工作正常,但在Internet Explorer 8中使用该表单时,发送的特殊字符都搞砸了(比如Ã而不是C)。但是,如果我将 utf8_encode 添加到 $ formcontent 中的变量,那么它可以在IE中运行,但它在Firefox中停止工作,显示η而不是ç。 / p>

无论浏览器如何,我该怎么做才能使其正常工作?任何帮助将不胜感激!

修改

我注意到,如果我在使用邮件发送之前回显 $ formcontent 变量,如果我使用的是Firefox,则特殊字符已经混乱 - 起来。如何避免浏览器干扰正在发送的内容?请你现在完全无能为力!我不知道要改变什么才能有所作为。即使它是一个愚蠢的版本,有没有其他选择让PHP Mail在两个浏览器中使用特殊字符?

1 个答案:

答案 0 :(得分:0)

基本上,您需要确保页面上的每个字符集都相同。确保页面上有一个utf-8字符集。由于您是在utf8中发送的,因此输入必须来自utf8。

您是否可以向我们展示正在制作邮件的页面代码(或现场演示)?