2012-04-12 47 views
3

我正在通過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); 
+3

聽起來像一個形式很糟糕的['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

+0

@dave我有點反對圖書館,因爲他們就像一個黑盒子:他們工作得很好,但我們大多數人不知道如何。所以我想寫我自己的代碼,並知道我做錯了什麼。我添加了源代碼,也許你可以看到問題。 – Phil 2012-04-12 09:56:43

+1

那麼一個直接打擊我的問題是,你應該使用CRLF'\ r \ n'來分隔行,而不僅僅是LF'\ n'。你也傳遞了兩次數據'$ mail',因爲當你把它傳遞給'mail()'的時候,你已經把它發送到頭文件和正文中了。我還看到很多人在標題中傳遞身體,但對我來說似乎沒有任何意義。我會將頭兩行(CRLF分隔)放在標題中,然後將其餘部分(也分隔CRLF)放入正文中。我也會將'MIME-Version:1.0'移動到標題 – DaveRandom 2012-04-12 10:11:50

回答

0

您的內容需要一個空行。在上面的例子應該是:

「內容傳輸編碼:8位\ n \ n」個

0

也有類似的問題,我一直在工作。就我而言,問題在於意見的順序。我和你有點不同,有「text/html」和「text/plain」。

如果先將「text/html」視圖添加到消息中,則消息將在預覽窗格中顯示,但不會顯示在主電子郵件窗格中,而「text/plain」部分將顯示在主電子郵件中窗格(但由於測試電子郵件沒有純文本部分,因此我們收到了無內容消息)。交換消息的「text/plain」和「text/html」部分,這樣HTML在純文本部分之後被添加到消息中,並且電子郵件的HTML部分在IOS郵件應用程序中變得可讀。

相關問題