Example #1
0
 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);
 }