我一直在思考这个问题,找不到任何关于我的问题的有用文章。我正在为一些快速确认电子邮件编写一个使用内置邮件功能的PHP网站。我意识到对内置邮件功能有相当多的偏见,但到目前为止,它对我来说一直很好,我希望能够继续使用它。当我只发送纯文本电子邮件时,一切都很好,就像我只发送HTML电子邮件一样。然而,如果我尝试做一个多部分的文本/HTML电子邮件,两个版本都会显示在我的电子邮件客户端中(同时尝试了thunderbird和gmail)。我希望这里有人能帮我找出我做错了什么(除了用mail()代替PHPMail)。这是我的代码片段
$uid = md5(uniqid(time()));
$strSubject = "Confirmation for $strEventName on $strEventDate";
$strHTMLMsg = "<h1><center>You are confirmed for the following event:</center></h1><br>n$strEvenDetails";
$strMsg = strip_tags($strHTMLMsg);
$toEmail = ""$strName" <$strEmail>";
$header = "$FromEmailn";
$header .= "MIME-Version: 1.0n";
$header .= "Content-Type: multipart/mixed; boundary="".$uid.""nn";
$header .= "Content-Transfer-Encoding: 7bitn";
$header .= "This is a MIME encoded message.nn";
$header .= "--".$uid."n";
$header .= "Content-type:text/plain; charset=UTF-8n";
$header .= "Content-Transfer-Encoding: 7bitnn";
$header .= $strMsg."nn";
$header .= "--".$uid."n";
$header .= "Content-type:text/HTML; charset=UTF-8n";
$header .= "Content-Transfer-Encoding: 7bitnn";
$header .= $strHTMLMsg."nn";
$header .= "--".$uid."n";
$header .= "Content-Type: application/ics; name="".$strFileName.""; method=PUBLISH; charset=UTF-8n";
$header .= "Content-Transfer-Encoding: 7bitn";
$header .= "Content-Disposition: attachment; filename="".$strFileName.""nn";
$header .= $strICSEvent."nn";
$header .= "--".$uid."n";
$bSuccess = mail($toEmail,$strSubject,"",$header);
Necromp,但我是在谷歌搜索后到达这里的,所以对于其他搜索词相同的人来说:multipart/mexed意味着你将查看所有部分。对于只有一个可见的HTML和文本部分,请使用multipart/alternative。最后一部分获得最高优先级。
另请参阅Mail multipart/alternative vs multipart/mexed了解更多信息;堆叠";mime内容。