2013-11-15 123 views
2

任何人都可以帮助我请如何为这些字符添加utf-8 Unicode?将Unicode UTF8添加到电子邮件

žýáťčšľľzŽŘ

现在的电子邮件看起来像这样

Dostali STEnovúsprávu。涂súpodrobnosti:JMA©NO:tár Tel.ÄÃslo:4996611

<?php 

$EmailFrom = "..."; 
$EmailTo = "[email protected]"; 
$Subject = "Zpráva s "; 
$name = Trim(stripslashes($_POST['name'])); 
$phone = Trim(stripslashes($_POST['phone'])); 
$email = Trim(stripslashes($_POST['email'])); 
$message = Trim(stripslashes($_POST['message'])); 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">"; 
    exit; 
} 

// prepare email body text 
$Body = ""; 
$Body .= "Name: "; 
$Body .= $name; 
$Body .= "\n"; 
$Body .= "Tel: "; 
$Body .= $phone; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 
$Body .= "Message: "; 
$Body .= $message; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">"; 
} 
else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">"; 
} 
?> 

感谢

+0

您是否阅读过有关UTF-8标头的[手册](http://php.net/manual/en/function.mail.php)或任何您使用的编码?你有没有考虑使用像[phpmailer](http://phpmailer.worxware.com/)这样的已经制作好的邮件类? –

回答

3

你有你的脚本两个暧昧的部分,其中不考虑字符集。可能你的表单没有发送UTF-8,或者你可能在你的电子邮件中发送UTF-8,但客户期待着不同的编码。

  1. 我假设您使用表单发布数据。确保它设置为从浏览器发送UTF-8。字符串现在将以UTF-8编码。

    <form action="myform" accept-charset="UTF-8"> 
    
  2. 您需要的字符集和传输编码头添加到电子邮件标题:

    $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit"); 
    

BTW,以便将用户重定向一个更快的方法是设置在该Location头响应。使用:

header('Location: contactthanks.php')