public static parseMessage ( string $text, array $opts = [] ) : Horde_Mime_Part | ||
$text | string | The text of the MIME message. |
$opts | array | Additional options: - forcemime: (boolean) If true, the message data is assumed to be MIME data. If not, a MIME-Version header must exist (RFC 2045 [4]) to be parsed as a MIME message. DEFAULT: false - level: (integer) Current nesting level of the MIME data. DEFAULT: 0 - no_body: (boolean) If true, don't set body contents of parts (since 2.2.0). DEFAULT: false |
return | Horde_Mime_Part | A MIME Part object. |
public static function parseMessage($text, array $opts = array())
{
/* Mini-hack to get a blank Horde_Mime part so we can call
* replaceEOL(). Convert to EOL, since that is the expected EOL for
* use internally within a Horde_Mime_Part object. */
$part = new Horde_Mime_Part();
$rawtext = $part->replaceEOL($text, self::EOL);
/* Find the header. */
$hdr_pos = self::_findHeader($rawtext, self::EOL);
unset($opts['ctype']);
$ob = self::_getStructure(substr($rawtext, 0, $hdr_pos), substr($rawtext, $hdr_pos + 2), $opts);
$ob->buildMimeIds();
return $ob;
}
/** * @requires extension bcmath */ public function testvTodo() { $tnef = Horde_Compress::factory('Tnef'); $mime = Horde_Mime_Part::parseMessage(file_get_contents(__DIR__ . '/fixtures/tnef_task.eml')); try { $tnef_data = $tnef->decompress($mime->getPart(2)->getContents()); } catch (Horde_Mapi_Exception $e) { $this->markTestSkipped('Horde_Mapi is not available'); } catch (Horde_Compress_Exception $e) { var_dump($e); } // Test the generated iCalendar. $iCal = new Horde_Icalendar(); if (!$iCal->parsevCalendar($tnef_data[0]['stream'])) { throw new Horde_Compress_Exception(_("There was an error importing the iCalendar data.")); } $this->assertEquals($iCal->getAttribute('METHOD'), 'REQUEST'); $components = $iCal->getComponents(); if (count($components) == 0) { throw new Horde_Compress_Exception(_("No iCalendar data was found.")); } $vTodo = current($components); $this->assertEquals($vTodo->getAttribute('SUMMARY'), 'Test Task'); $this->assertEquals($vTodo->getAttribute('UID'), 'EDF71E6FA6FB69A79D79FE1D6DCDBBD300000000DFD9B6FB'); $this->assertEquals($vTodo->getAttribute('ATTENDEE'), 'Michael Rubinsky <*****@*****.**>'); $params = $vTodo->getAttribute('ATTENDEE', true); if (!$params) { throw new Horde_Compress_Exception('Could not find expected parameters.'); } $this->assertEquals($params[0]['ROLE'], 'REQ-PARTICIPANT'); $this->assertEquals($vTodo->getAttribute('ORGANIZER'), 'mailto: [email protected]'); }