public function testAddAttachmentPart() { $hf = $this->getMockedHeaderFactory(); $part = $this->getMockedPart(); $part->method('getHeaderValue')->willReturn('image/png'); $message = new Message($hf); $message->addPart($part); $this->assertNull($message->getHtmlPart()); $this->assertNull($message->getTextPart()); $this->assertSame($part, $message->getAttachmentPart(0)); }
/** * @param \ZBateson\MailMimeParser\MimePart[] $mimePart * @param \ZBateson\MailMimeParser\Message $message * @return array */ function files_parser($message, $messageData) { $i = 0; $files = []; while ($att = $message->getAttachmentPart($i)) { try { //$typeHeaders = $att->getHeaders(); $typeHeader = $att->getHeader('Content-Type'); $filetype = $typeHeader->getValue(); $filename = trim(explode('name=', $typeHeader->getRawValue())[1], "\"'"); $filecontent = stream_get_contents($att->getContentResourceHandle()); $tmp_name = APPROOT . '/temp/' . time() . '-' . $messageData['from'] . '-' . $filename; if (file_put_contents($tmp_name, $filecontent)) { chmod($tmp_name, 0777); //chown($tmp_name, 'www-data'); $files[$i]['filename'] = $filename; $files[$i]['filetype'] = $filetype; $files[$i]['tmpfile'] = $tmp_name; } else { loger_error("Line: " . __LINE__ . "; Error save file part: {$i}; name: {$filename};"); } } catch (Exception $error) { loger_error("Line: " . __LINE__ . "; Error parse file part {$i}. Message error: " . $error->getMessage()); } $i++; } return $files; }
/** * Creates a part stream handle for the start and end position of the * message stream, and attaches it to the passed MimePart. * * @param MimePart $part * @param Message $message * @param int $start * @param int $end */ public function attachPartStreamHandle(MimePart $part, Message $message, $start, $end) { $id = $message->getObjectId(); if (empty($this->registeredHandles[$id])) { return null; } $handle = fopen('mmp-mime-message://' . $id . '?start=' . $start . '&end=' . $end, 'r'); $this->attachEncodingFilterToStream($part, $handle); $this->attachCharsetFilterToStream($part, $handle); $part->attachContentResourceHandle($handle); }