Zend Mail - 从GMAIL获取IMAP附件

时间:2012-09-04 14:58:04

标签: php zend-framework imap

我在使用Zend Framework时遇到了麻烦,并从GMAIL获取了Attachements。身份验证由oAuth负责。

获取Mailtext没问题,但我不能获取附件,或者更好,我不知道怎么做(;

        if ($message->isMultiPart()) {

            $iParts = $message->countParts();

            for ($i = 1; $i < $iParts; $i++) {
                $part = $message->getPart($i);

                // ATTACHEMENT?
                if () {
                    // DO MAIL DOWNLOAD
                }

                // MAIL TEXT
                if (strtok($part->contentType, ';') == 'text/plain') {
                    $encoding = $part->getHeader('content-transfer-encoding');
                    $contentType = $part->getHeader('content-type');
                    $content = $part->getContent();
                    break;
                } 
            }

我的邮件标题(删除了一些细节):

[delivered-to] => xxxx@gmail.com
[received] => Array
    (
        [0] => 
        [1] => 
        [2] => 
        [3] => 
    )
[return-path] => 
[received-spf] => 
[authentication-results] => 
[dkim-signature] =>
[mime-version] => 1.0
[from] => 
[date] => Thu, 30 Aug 2012 17:16:37 +0200
[message-id] => 
[subject] => ANHANG
[to] => 
[content-type] => multipart/mixed; boundary=f46d043bd88a9f5d9404c87d2ad5

1 个答案:

答案 0 :(得分:2)

我还没试过,但是,如果它有效,你欠我一杯啤酒......无论如何,试试这个:逻辑上它应该有用......

if ($message->isMultiPart()) {
     $part = $message->getPart(2);
}

       // Remember mails with attachment are MULTI-part? (:
       $filename = $part->getHeader('content-description');
       $attachment = base64_decode($part->getContent()); //we decode because mails are encoded with base 64

       // File operations
       $fh = fopen($filename, 'w');
       fwrite($fh, $attachment);
       fclose($fh);

如果您收到错误,请在此处发布

或者如果它有效,给我一个滴答滴答;)