php邮件程序如何保留文本格式

php邮件程序如何保留文本格式,php,Php,下面的代码在发送到GMAIL、YAHOO、HOTMAIL时保留邮件格式,但在通过Outlook或Mozilla Thunderbird访问显示空邮件时则相反 我尝试了N2blr,但它给出了正确的结果 有什么想法吗 $fp = fopen($attachment_temp, "rb"); $file = fread($fp, $attachment_size); $file = chunk_split(base64_encode($file)); $num = md5(time()); //N

下面的代码在发送到GMAIL、YAHOO、HOTMAIL时保留邮件格式,但在通过Outlook或Mozilla Thunderbird访问显示空邮件时则相反

我尝试了N2blr,但它给出了正确的结果

有什么想法吗

$fp = fopen($attachment_temp, "rb");
$file = fread($fp, $attachment_size);

$file = chunk_split(base64_encode($file));
$num = md5(time());

//Normal headers

$headers  = "From: ".$namefrom."<".$mailhost.">\r\n";
$headers .="Reply-To: ".$emailfrom."\r\n";
$headers  .= "MIME-Version: 1.0\r\n";
$headers  .= "Content-Type: multipart/mixed; ";
$headers  .= "boundary=".$num."\r\n";
$headers  .= "--$num\r\n";

// This two steps to help avoid spam

$headers .= "Message-ID: <".gettimeofday()."   TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";

// With message

$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "".$message."\n";
$headers .= "--".$num."\n";

// Attachment headers


$headers  .= "Content-Type:".$attachment_type." ";
$headers  .= "name=\"".$attachment_name."\"r\n";
$headers  .= "Content-Transfer-Encoding: base64\r\n";
$headers  .= "Content-Disposition: attachment; ";
$headers  .= "filename=\"".$attachment_name."\"\r\n\n";
$headers  .= "".$file."\r\n";
$headers  .= "--".$num."--";
$fp=fopen($attachment_temp,“rb”);
$file=fread($fp,$attachment\u size);
$file=chunk_split(base64_encode($file));
$num=md5(time());
//正常标题
$headers=“From:”.$namefrom.\r\n”;
$headers.=“回复:”.$emailfrom.\r\n”;
$headers.=“MIME版本:1.0\r\n”;
$headers.=“内容类型:多部分/混合;”;
$headers.=“boundary=”.$num.“\r\n”;
$headers.=“--$num\r\n”;
//这两个步骤有助于避免垃圾邮件
$headers.=“邮件ID:\r\n”;
$headers.=“X-Mailer:PHP v”.phpversion()。”\r\n;
//带着信息
$headers.=“内容类型:text/html;字符集=iso-8859-1\r\n”;
$headers.=“内容传输编码:8位\r\n”;
$headers.=''.$message.\n“;
$headers.=“-”$num.“\n”;
//附件标题
$headers.=“内容类型:”.$attachment_Type.”;
$headers.=“name=\”.$attachment\u name.\“r\n”;
$headers.=“内容传输编码:base64\r\n”;
$headers.=“内容处置:附件;”;
$headers.=“filename=\”.$attachment\u name.\“\r\n\n”;
$headers.=''.$file.\r\n“;
$headers.=“-”$num.“-”;

我觉得这里有个错误:

$headers.=“内容类型:text/html;字符集=iso-8859-1\r\n”; $headers.=“内容传输编码:8位\r\n”; $headers.=''.$message.\n“; $headers.=“-”$num.“\n”

第三行应该是

$headers.=“\r\n”。$message.\n”


即使某些服务器能够从此类错误中恢复。此外,您可能希望从ISO-8859-1迁移到UTF-8以获得更完整的国际化支持。

是的,在看到您的评论和RDs后,ISOs似乎已经给出了问题。它与以下内容完美配合:$headers.=“内容类型:text/html;charset=utf-8\r\n\r\n”$标题。=''.nl2br($message)。“\n”$头文件。=“-”$num.“\n”;这应该行得通。缺少的
\r\n
会阻止某些读卡器意识到标题已完成且邮件已启动,从而使它们无法显示邮件正文的一部分(或全部)
$headers
有点用词不当,真的。谢谢你抽出时间。