我正在通過PHP郵件()發送HTML郵件。內容是一些div容器和一些外部圖像。HTML郵件導致Apple移動設備上的「無內容」
在iPhone和iPad等Apple移動設備上,無法讀取郵件內容,而是顯示「此郵件無內容」消息。 有趣的是,在郵件應用程序的預覽窗格中,我可以看到郵件的前幾個單詞。所以內容至少在某種程度上存在。 在Google webmailer中閱讀相同的郵件時,一切都很好。
你能幫忙嗎?
編輯:根據要求,這裏的來源。 $ mail將HTML-mailbody作爲值。
$id = md5(uniqid(time()));
$header= "From: Mailer <[email protected]>\n";
$header.= "Content-Type: multipart/mixed; boundary=".$id."\n";
$header.= "This is a multi-part message in MIME format\n";
$header.= "--".$id."\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-type: text/html; charset=iso-8859-1\n";
$header.= "Content-Transfer-Encoding: 8bit\n";
$header.= $mail."\n";
$header.= "--".$id."--";
$betreff = mb_encode_mimeheader("subject", "UTF-8");
mail($mailaddress, $betreff, $mail, $header);
聽起來像一個形式很糟糕的['multipart/alternative'](http://en.wikipedia.org/wiki/MIME#Alternative)給我的消息,但是你必須在我們提供幫助之前顯示你的代碼。你應該使用像[PHPMailer](http://phpmailer.worxware.com/)或[SwiftMailer](http://swiftmailer.org/)這樣的庫,它將構造格式良好的消息並將其正確發送給你和你不會遇到這樣的問題。 – DaveRandom 2012-04-12 09:26:28
@dave我有點反對圖書館,因爲他們就像一個黑盒子:他們工作得很好,但我們大多數人不知道如何。所以我想寫我自己的代碼,並知道我做錯了什麼。我添加了源代碼,也許你可以看到問題。 – Phil 2012-04-12 09:56:43
那麼一個直接打擊我的問題是,你應該使用CRLF'\ r \ n'來分隔行,而不僅僅是LF'\ n'。你也傳遞了兩次數據'$ mail',因爲當你把它傳遞給'mail()'的時候,你已經把它發送到頭文件和正文中了。我還看到很多人在標題中傳遞身體,但對我來說似乎沒有任何意義。我會將頭兩行(CRLF分隔)放在標題中,然後將其餘部分(也分隔CRLF)放入正文中。我也會將'MIME-Version:1.0'移動到標題 – DaveRandom 2012-04-12 10:11:50