我正在寫一個PHP應用程序,它從一個郵件帳戶讀取電子郵件並將某些郵件轉發到另一個郵件帳戶。我使用imap_mail_compose()來創建將被轉發的消息。當我處理純文本消息或HTML消息時,它工作得很好。問題出在我有一條消息同時包含文本和HTML組件時。該消息在我的電腦上的郵件閱讀器中顯示得很好,在通過Web應用程序閱讀時也很好。 Android電子郵件程序改爲顯示帶有兩個名爲'noname'的附件的空白郵件。原始郵件在android電子郵件程序中讀取得很好,所以我不確定原始郵件和我創建的郵件之間有什麼不同。我查看了兩個消息中的結構,如imap_fetchstructure()所檢索到的,它們是相同的,所以看起來我正在創建消息,但顯然我做錯了什麼。我還用一個不同的android電子郵件程序K-9 Mail來檢查它,它在那裏工作得很好。imap_mail_compose在android電子郵件中創建noname附件
下面是我用來設置imap_mail_compose()使用的正文部分的一些代碼。 變量$ emailMessage來自一個抽出電子郵件所有部分的類。我發現它在http://www.electrictoolbox.com/php-email-extract-inline-image-attachments/並添加了一些額外的項目。
$bptr = 1;
// if both text and HTML parts exist
if ((strlen($emailMessage->bodyHTML) > 0) && (strlen($emailMessage->bodyPlain) > 0))
{
$hdr["type"] = TYPEMULTIPART;
$hdr["subtype"] = "alternative";
$body[$bptr++] = $hdr;
}
// check for plain text message
if (strlen($emailMessage->bodyPlain) > 0) {
$tpart["type"] = TYPETEXT;
$tpart["subtype"] = "plain";
$tpart["encoding"] = $emailMessage->plain_encoding;
$tpart["disposition.type"] = "INLINE";
if (strlen($emailMessage->plain_charset) > 0)
$tpart["charset"] = $emailMessage->plain_charset;
$tpart["contents.data"] = $emailMessage->encodePlain;
$body[$bptr++] = $tpart;
}
// check for HTML message
if (strlen($emailMessage->bodyHTML) > 0) {
$hpart["type"] = TYPETEXT;
$hpart["subtype"] = "html";
$hpart["encoding"] = $emailMessage->html_encoding;
$hpart["disposition.type"] = "INLINE";
if (strlen($emailMessage->html_charset) > 0)
$hpart["charset"] = $emailMessage->html_charset;
$hpart["contents.data"] = $emailMessage->encodeHTML;
$body[$bptr++] = $hpart;
}
那麼,有人有任何想法嗎?感謝您的幫助,因爲這是一個真正的潛力。