/** * Cache content and split in parts if multipart * * @return null * @throws Zend_Mail_Exception */ protected function _cacheContent() { // caching content if we can't fetch parts if ($this->_content === null && $this->_mail) { $this->_content = $this->_mail->getRawContent($this->_messageNum); } if (!$this->isMultipart()) { return; } // split content in parts $boundary = Zend_Mime_Decode::splitContentType($this->contentType, 'boundary'); if (!$boundary) { throw new Zend_Mail_Exception('no boundary found in content type to split message'); } $parts = Zend_Mime_Decode::splitMessageStruct($this->_content, $boundary); $counter = 1; foreach ($parts as $part) { $this->_parts[$counter++] = new self(array('headers' => $part['header'], 'content' => $part['body'])); } }
public function testContentTypeDecode() { $message = new Zend_Mail_Message(array('file' => $this->_file)); $this->assertEquals(Zend_Mime_Decode::splitContentType($message->ContentType), array('type' => 'multipart/alternative', 'boundary' => 'crazy-multipart')); }
/** * Parse an RFC-822 message * * this format is quite old and not used anymore but some old * devices may still send it * * @param string $message * @return array */ public static function decodeRFC822(&$message) { try { Zend_Mime_Decode::splitMessage(ltrim($message), $headers, $content); $contentType = isset($headers['content-type']) ? $headers['content-type'] : ''; if ($contentType) { $contentType = Zend_Mime_Decode::splitContentType($contentType); } if (isset($contentType['boundary'])) { $mimeParts = self::splitMessageStruct($content, $contentType['boundary']); } else { $mimeParts = array(); } $message = array('headers' => $headers, 'content' => $content, 'mime_parts' => $mimeParts, 'content_type' => $contentType); return true; } catch (Exception $e) { return false; } }