簡體   English   中英

imap_mail_compose在android電子郵件中創建非名稱附件

[英]imap_mail_compose creates noname attachments in android email

我正在編寫一個php應用程序,它從一個郵件帳戶讀取電子郵件,並將某些郵件轉發到另一個郵件帳戶。 我使用imap_mail_compose()來創建將被轉發的消息。 當我處理純文本消息或HTML消息時,它可以正常工作。 當我有一條包含文本和HTML組件的消息時,問題就在於此。 消息在我的計算機上的郵件閱讀器中顯示得很好,並且在通過Web應用程序閱讀時也很好。 android電子郵件程序顯示一條空白郵件,其中包含兩個名為“noname”的附件。 原始消息在android電子郵件程序中讀得很好,所以我不確定原始消息和我創建的消息之間有什么區別。 我已經看了兩個消息中的結構,由imap_fetchstructure()檢索它們是相同的,所以看起來我正在創建消息,但顯然我做錯了。 我還用不同的Android電子郵件程序K-9 Mail檢查了它,它在那里工作正常。

這是我用來設置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;
}

那么,有人對此有任何想法嗎? 感謝您的幫助,因為這是一個真正的難題。

我找到了一個適用於此的解決方案。 它位於php網站上: http//php.net/manual/en/function.imap-append.php

由於我們一直在努力解決這個問題,我想分享一下我們如何讓imap_append與所有MIME部分(包括附件)一起正常工作。 如果您要發送電子郵件並希望將已發送的郵件附加到已發送郵件文件夾,我想不出更簡單的方法,如下所示:

1)使用SwiftMailer通過PHP發送消息。 $ message = Swift_Message :: newInstance(“Subject goes here”); (然后添加from,to,body,attachments等)$ result = $ mailer-> send($ message);

2)在上面的步驟1)中構造消息時,將其保存到變量,如下所示:

$ msg = $ message-> toString(); (這會創建imap_append()所需的完整MIME消息!!之后你可以像這樣調用imap_append:

imap_append($ imap_conn,$ mail_box,$味精為 “\\ r \\ n”, “\\看”。);

所以請訪問http://swiftmailer.org/並使用他們的庫而不是重新發明輪子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM