私はしばらくこれに頭を悩ませていましたが、私の問題に関する役立つ記事を見つけることができませんでした. 組み込みのメール機能を使用して、簡単な確認メールを送信する PHP サイトを作成しています。ビルトインのメール機能に対してかなりの偏見があることは承知していますが、これまでのところうまく機能しており、引き続き使用できるようにしたいと考えています。平文の電子メールを送信すると、HTML 電子メールを送信した場合と同じように、すべてうまく機能します。ただし、マルチパート テキスト/HTML メールを実行しようとすると、両方のバージョンがメール クライアントに表示されます (サンダーバードと gmail の両方を試しました)。ここの誰かが私が間違っていることを理解するのを手伝ってくれることを願っています(PHPMailの代わりにmail()を使用することに加えて)。ここに私のコードスニペットがあります
$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 = "$FromEmail\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\n\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= "This is a MIME encoded message.\n\n";
$header .= "--".$uid."\n";
$header .= "Content-type:text/plain; charset=UTF-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
$header .= $strMsg."\n\n";
$header .= "--".$uid."\n";
$header .= "Content-type:text/HTML; charset=UTF-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
$header .= $strHTMLMsg."\n\n";
$header .= "--".$uid."\n";
$header .= "Content-Type: application/ics; name=\"".$strFileName."\"; method=PUBLISH; charset=UTF-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= "Content-Disposition: attachment; filename=\"".$strFileName."\"\n\n";
$header .= $strICSEvent."\n\n";
$header .= "--".$uid."\n";
$bSuccess = mail($toEmail,$strSubject,"",$header);