zend-mime icon indicating copy to clipboard operation
zend-mime copied to clipboard

Attachments can not be seperated from mail body correctly

Open SevenbitsIt opened this issue 8 years ago • 1 comments

I try to get Attachments from a message but i allways get error:

2016-12-30T15:46:09+00:00 CRIT (2): Something went wrong: Line "Received: (qmail 5233 invoked from network); 30 Dec 2016 16:46:09 +0100 X-Fcrdns: Yes Received: from xxxxxxxxx.adsl.highway.telekom.at (HELO [xxx.xxx.xxx.xxx]) (xxx.xxx.xxx.xxx) (smtp-auth username [email protected], mechanism plain) by server.de (qpsmtpd/0.92) with (ECDHE-RSA-AES256-SHA encrypted) ESMTPSA; Fri, 30 Dec 2016 16:46:09 +0100 To: [email protected] From: sssssd ddddn [email protected] Subject: testmail Organization: ddddddddddddddddddd Message-ID: 5114d274-dde3-2ca5-6c9d-3bd59f59065a@ddddddddd Date: Fri, 30 Dec 2016 16:46:04 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------3FE86778A6885A966DF16AC3" X-User-Auth: Auth by [email protected] through xxx.xxx.xxx.xxx" does not match header format!

It's identical to https://github.com/zendframework/zendframework/issues/2606 which is closed.

$rawMsg = preg_replace('~\R~u', "\r\n", $rawMsg);

seems to be a quickfix, the mail can then be parsed, but the filenames cannot be read and are empty on the attachment object.

This is my sourcecode to split the message which comes from stdin.

        $rawMsg = preg_replace('~\R~u', "\r\n", $rawMsg);
        $message = new \Zend\Mail\Message();
        $headers = null;
        $content = null;

        \Zend\Mime\Decode::splitMessage($rawMsg, $headers, $content, \Zend\Mail\Headers::EOL);     
        $boundary = $headers->get('contenttype')->getParameter('boundary');
        $mimeMsg = \Zend\Mime\Message::createFromMessage($content, $boundary);
        $message->setHeaders($headers);
        $message->setBody($mimeMsg);
        $attachmentsDesc=$mimeMsg->getParts();
        $fileManager=new FileManager();
        
        foreach($attachmentsDesc as $attachment)
        {
            $this->log->debug($attachment->type);  // this property  holds content type, line break AND name 
            $this->log->debug($attachment->filename); // this is empty
       //     $fileData=$fileManager->storeStreamToInbox(base64_decode($attachment->getContent()), $attachment->filename);
            
            $this->log->debug("file created");
        }

SevenbitsIt avatar Dec 30 '16 16:12 SevenbitsIt

This repository has been closed and moved to laminas/laminas-mime; a new issue has been opened at https://github.com/laminas/laminas-mime/issues/5.

weierophinney avatar Dec 31 '19 21:12 weierophinney