PHP mail()html字符无法正常显示

时间:2014-01-13 20:46:46

标签: php email text unicode ascii

我遇到了PHP mail()函数的问题。如下所示,我使用PHP mail()函数发送带有中文字符的HTML电子邮件。当发送$ studentInfo的第一封电子邮件在最终电子邮件中正确显示文本时,发送$ studentInfoEN的下一个命令无法正确显示。有什么想法吗?

P.S。 $ name,$ phoneNumber,$ eMail等都是从HTML表单文本输入中接收的文本字符串

<?php 

$message="<html><body><p>Training Inquiry: ".$_GET["courseName"]."  ".$trainerMonths[$userMonth]." ".$_GET["day"].", 2014 ".$_GET["enLoc"]."</p></body></html>";

$studentInfo="<html><body><p>
                    姓名: $name<br/>
                    电话号码: $phoneNumber <br/> 
                    邮箱: $eMail<br/>
                    工厂名称: $factoryName<br/>
                    WRAP注册编号: $wrapNumber<br/>
                    所在国家: $homeCountry </p></body></html>";

$studentInfoEN="<html><body><p>
    Name $name <br/>
    Phone Number: $phoneNumber <br/>  
    E-mail: $eMail <br/>
    Factory Name: $factoryName <br/>
    WRAP Registration Number: $wrapNumber <br/>
    Home Country: $homeCountry </p></body></html>";

$trainerHeaders = "From:".$email."\n"."Reply-To:".$email."\n"."Content-type:text/html;charset=utf-8;"."\n";
$clientHeaders = "From:".$trainerAddress."\n"."Reply-To:".$trainerAddress."\n"."Content-type:text/html;charset=utf-8;"."\r\n";

mail($trainerAddress,"Training Inquiry",$message.$studentInfoEN,$trainerHeaders);
mail($eMail,"Web Submission Confirmation","$automatedMessage"."$confirmMessage"."$studentInfo",$clientHeaders); 

?>

1 个答案:

答案 0 :(得分:1)

这似乎不对,您在开始<html>标记之前输出字符串,并且您要在第一行关闭bodyhtml标记:

$studentInfoEN="
    Name"."<html><body><p>$name</p></body></html>"."

应该只是:

$studentInfoEN="<html><body><p>Name: $name

修改:除此之外,您正在连接两条消息$message.$studentInfoEN,为您提供2个html标记,2个body等可能会导致显示错误。