本文整理汇总了PHP中Zend_Mime_Decode::splitMessageStruct方法的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Mime_Decode::splitMessageStruct方法的具体用法?PHP Zend_Mime_Decode::splitMessageStruct怎么用?PHP Zend_Mime_Decode::splitMessageStruct使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend_Mime_Decode
的用法示例。
在下文中一共展示了Zend_Mime_Decode::splitMessageStruct方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createFromMessage
/**
* Decodes a MIME encoded string and returns a Zend_Mime_Message object with
* all the MIME parts set according to the given string
*
* @param string $message
* @param string $boundary
* @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
* @return Zend_Mime_Message
*/
public static function createFromMessage($message, $boundary, $EOL = Zend_Mime::LINEEND)
{
require_once 'Zend/Mime/Decode.php';
$parts = Zend_Mime_Decode::splitMessageStruct($message, $boundary, $EOL);
$res = new self();
foreach ($parts as $part) {
// now we build a new MimePart for the current Message Part:
$newPart = new Zend_Mime_Part($part['body']);
foreach ($part['header'] as $key => $value) {
/**
* @todo check for characterset and filename
*/
switch (strtolower($key)) {
case 'content-type':
$newPart->type = $value;
break;
case 'content-transfer-encoding':
$newPart->encoding = $value;
break;
case 'content-id':
$newPart->id = trim($value, '<>');
break;
case 'content-disposition':
$newPart->disposition = $value;
break;
case 'content-description':
$newPart->description = $value;
break;
case 'content-location':
$newPart->location = $value;
break;
case 'content-language':
$newPart->language = $value;
break;
default:
throw new Zend_Exception('Unknown header ignored for MimePart:' . $key);
}
}
$res->addPart($newPart);
}
return $res;
}
示例2: _cacheContent
/**
* 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 = $this->getHeaderField('content-type', 'boundary');
if (!$boundary) {
/**
* @see Zend_Mail_Exception
*/
require_once 'Zend/Mail/Exception.php';
throw new Zend_Mail_Exception('no boundary found in content type to split message');
}
$parts = Zend_Mime_Decode::splitMessageStruct($this->_content, $boundary);
if ($parts === null) {
return;
}
$partClass = $this->getPartClass();
$counter = 1;
foreach ($parts as $part) {
$this->_parts[$counter++] = new $partClass(array('headers' => $part['header'], 'content' => $part['body']));
}
}
示例3: _cacheContent
/**
* 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']));
}
}
示例4: testSplitInvalidMessage
public function testSplitInvalidMessage()
{
try {
Zend_Mime_Decode::splitMessageStruct("--xxx\n", 'xxx');
} catch (Zend_Exception $e) {
return;
// ok
}
$this->fail('no exception raised while decoding invalid message');
}
示例5: getHtmlBodyAndAttachmentData
/**
* recover html body and atachment data from rfc822 mime
*
* @param string $mime
* @return array
*/
public function getHtmlBodyAndAttachmentData($mime, $onlyInline = FALSE)
{
//$filepath = '../tests/tine20/Expressomail/Frontend/files/mime/';
//$filename = microtime();
//file_put_contents($filepath.$filename.'.eml', $mime);
preg_match('/.*boundary="(.*)"/', $mime, $matches);
if (count($matches) === 0) {
Zend_Mime_Decode::splitMessage($mime, $headers, $body);
$body = base64_decode($body);
if (strpos($headers['content-type'], 'text/plain') !== FALSE) {
$body = $this->convertPlainTextToHtml($body);
}
$result = array('body' => $body);
//file_put_contents($filename.'.json', json_encode($result));
return $result;
}
$struct = Zend_Mime_Decode::splitMessageStruct($mime, $matches[1]);
$result = array();
$result['attachmentData'] = array();
$multipartContent = $this->getMultipartPart($struct, 'multipart');
if ($multipartContent) {
preg_match('/.*boundary="(.*)"/', $multipartContent['header']['content-type'], $matches);
$bodyBoundary = $matches[1];
$bodyStruct = Zend_Mime_Decode::splitMessageStruct($multipartContent['body'], $bodyBoundary);
$bodyContent = $this->getMultipartPart($bodyStruct, 'text/html');
if ($bodyContent) {
$bodyHtml = $this->extractBodyTagContent($bodyContent['body']);
if (strpos($bodyContent['header']['content-transfer-encoding'], 'base64') !== FALSE) {
$bodyHtml = base64_decode($bodyHtml);
}
} else {
$bodyHtml = '';
}
$result['attachmentData'] = $this->getAttachmentParts($bodyStruct, $onlyInline);
} else {
$bodyContent = $this->getMultipartPart($struct, 'text/html');
if ($bodyContent) {
if (strpos($bodyContent['header']['content-transfer-encoding'], 'base64') !== FALSE) {
$bodyHtml = base64_decode($bodyContent['body']);
} else {
$bodyHtml = $this->extractBodyTagContent($bodyContent['body']);
}
} else {
$bodyContent = $this->getMultipartPart($struct, 'text');
$bodyHtml = $bodyContent['body'];
if (strpos($bodyContent['header']['content-transfer-encoding'], 'base64') !== FALSE) {
$bodyHtml = base64_decode($bodyHtml);
}
if (strpos($bodyContent['header']['content-type'], 'text/plain') !== FALSE) {
$bodyHtml = $this->convertPlainTextToHtml($bodyHtml);
}
}
}
$result['body'] = quoted_printable_decode($bodyHtml);
$result['attachmentData'] = array_merge($result['attachmentData'], $this->getAttachmentParts($struct, $onlyInline));
//$filepath = '../tests/tine20/Expressomail/Frontend/files/result/';
//file_put_contents($filepath.$filename.'.json', json_encode($result));
return $result;
}