Attachments can not be seperated from mail body correctly #23
Description
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 zendframework/zendframework#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");
}