Example #1
0
 /**
  * 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']));
     }
 }
Example #2
0
 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'));
 }
Example #3
0
 /**
  * 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;
     }
 }