簡體   English   中英

Imap_mail_compose撰寫帶有附件和郵件的電子郵件

[英]Imap_mail_compose composing email with attachments and message

我正在嘗試撰寫帶有正文和多個附件的電子郵件,但無法完成。 使用imap_mail_compose編寫電子郵件,並使用imap_append將電子郵件添加到草稿中。 創建電子郵件時,用戶可以上傳多個圖像,這就是為什么我需要這些圖像在草稿中移動的原因。 謝謝您的幫助

    $conn = imap_open($rootMailBox, Auth::user()->email_smtp, Auth::user()->pass_smtp);


    $envelope["date"] = date('r');
    $envelope["from"] = $data['from'];
    $envelope["to"] = $data['to'];
    $envelope["subject"] = $data['subject'];
    if (array_key_exists('cc', $data)) {
        $envelope["cc"] = $data['cc'];
    }
    if (array_key_exists('bcc', $data)) {
        $envelope["bcc"] = $data['bcc'];
    }
    if (array_key_exists('attachs', $data)) {
        $multipart["type"] = "MULTIPART";
        $multipart["subtype"] = "mixed";
        $body[] = $multipart;
    }

    if (array_key_exists('attachs', $data)) {
        foreach ($data['attachs'] as $attach) {
            $part = array();
            $filename = $attach;
            if (filesize($filename) > 0) {
                $fp = fopen($filename, "rb");
                $file_size = filesize($attach);
                $part["type"] = 'APPLICATION';
                $part["encoding"] = ENCBASE64;
                $part["subtype"] = "octet-stream";
                $part["description"] = basename($filename);
                $part['disposition.type'] = 'attachment';
                $part['disposition'] = array('filename' => basename($filename));
                $part['type.parameters'] = array('name' => basename($filename));
                $part["description"] = '';
                $part["contents.data"] = base64_encode(fread($fp, $file_size));
                $body[] = $part;
                fclose($fp);
            }
        }
    }
    if ($data['message']) {
        $part = array();
        $part["type"] = "TEXT";
        $part["subtype"] = "html";
        $part["description"] = '';
        $part["contents.data"] = $data['message'];
        $body[] = $part;
    }

    $msg = imap_mail_compose($envelope, $body);
    if (imap_append($conn, $draftsMailBox, $msg) === false) {
        //die("could not append message: " . imap_last_error());
        return FALSE;
    } else {
        return TRUE;
    }

更正代碼-

我必須為附件添加“替代”子類型。 它適用於html正文和附件。

    if (array_key_exists('attachs', $data)) {
        $multipart["type"] = TYPEMULTIPART;
        $multipart["subtype"] = "alternative";
        $body[$i++] = $multipart;
    }

    if (array_key_exists('attachs', $data)) {
        foreach ($data['attachs'] as $attach) {
            $part = array();
            $filename = $attach;
            if (filesize($filename) > 0) {
                $fp = fopen($filename, "rb");
                $file_size = filesize($attach);
                $part["type"] = 'APPLICATION';
                $part["encoding"] = ENCBASE64;
                $part["subtype"] = "octet-stream";
                $part["description"] = basename($filename);
                $part['disposition.type'] = 'attachment';
                $part['disposition'] = array('filename' => basename($filename));
                $part['type.parameters'] = array('name' => basename($filename));
                $part["description"] = '';
                $part["contents.data"] = base64_encode(fread($fp, $file_size));
                $body[$i++] = $part;
                fclose($fp);
            }
        }
    }
    if ($data['message']) {
        $part = array();
        $part["type"] = "TEXT";
        $part["subtype"] = "html";
        $part["description"] = '';
        $part["contents.data"] = $data['message'];
        $body[$i++] = $part;
    }

    $msg = imap_mail_compose($envelope, $body);
    if (imap_append($conn, $draftsMailBox, $msg) === false) {
        //die("could not append message: " . imap_last_error());
        return FALSE;
    } else {
        return TRUE;
    }

暫無
暫無

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

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