summaryrefslogtreecommitdiff
path: root/Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php')
-rw-r--r--Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php333
1 files changed, 333 insertions, 0 deletions
diff --git a/Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php b/Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php
new file mode 100644
index 0000000..9051c28
--- /dev/null
+++ b/Postman/Postman-Mail/Zend-1.12.10/Mime/Part.php
@@ -0,0 +1,333 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Postman_Zend_Mime
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Postman_Zend_Mime
+ */
+// require_once 'Zend/Mime.php';
+
+/**
+ * Class representing a MIME part.
+ *
+ * @category Zend
+ * @package Postman_Zend_Mime
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Postman_Zend_Mime_Part
+{
+
+ /**
+ * Type
+ *
+ * @var string
+ */
+ public $type = Postman_Zend_Mime::TYPE_OCTETSTREAM;
+
+ /**
+ * Encoding
+ *
+ * @var string
+ */
+ public $encoding = Postman_Zend_Mime::ENCODING_8BIT;
+
+ /**
+ * ID
+ *
+ * @var string
+ */
+ public $id;
+
+ /**
+ * Disposition
+ *
+ * @var string
+ */
+ public $disposition;
+
+ /**
+ * Filename
+ *
+ * @var string
+ */
+ public $filename;
+
+ /**
+ * Description
+ *
+ * @var string
+ */
+ public $description;
+
+ /**
+ * Character set
+ *
+ * @var string
+ */
+ public $charset;
+
+ /**
+ * Boundary
+ *
+ * @var string
+ */
+ public $boundary;
+
+ /**
+ * Location
+ *
+ * @var string
+ */
+ public $location;
+
+ /**
+ * Language
+ *
+ * @var string
+ */
+ public $language;
+
+ /**
+ * Content
+ *
+ * @var mixed
+ */
+ protected $_content;
+
+ /**
+ * @var bool
+ */
+ protected $_isStream = false;
+
+ /**
+ * create a new Mime Part.
+ * The (unencoded) content of the Part as passed
+ * as a string or stream
+ *
+ * @param mixed $content String or Stream containing the content
+ */
+ public function __construct($content)
+ {
+ $this->_content = $content;
+ if (is_resource($content)) {
+ $this->_isStream = true;
+ }
+ }
+
+ /**
+ * @todo setters/getters
+ * @todo error checking for setting $type
+ * @todo error checking for setting $encoding
+ */
+
+ /**
+ * check if this part can be read as a stream.
+ * if true, getEncodedStream can be called, otherwise
+ * only getContent can be used to fetch the encoded
+ * content of the part
+ *
+ * @return bool
+ */
+ public function isStream()
+ {
+ return $this->_isStream;
+ }
+
+ /**
+ * if this was created with a stream, return a filtered stream for
+ * reading the content. very useful for large file attachments.
+ *
+ * @return mixed Stream
+ * @throws Postman_Zend_Mime_Exception if not a stream or unable to append filter
+ */
+ public function getEncodedStream()
+ {
+ if (!$this->_isStream) {
+ require_once 'Zend/Mime/Exception.php';
+ throw new Postman_Zend_Mime_Exception(
+ 'Attempt to get a stream from a string part'
+ );
+ }
+
+ //stream_filter_remove(); // ??? is that right?
+ switch ($this->encoding) {
+ case Postman_Zend_Mime::ENCODING_QUOTEDPRINTABLE:
+ $filter = stream_filter_append(
+ $this->_content,
+ 'convert.quoted-printable-encode',
+ STREAM_FILTER_READ,
+ array(
+ 'line-length' => 76,
+ 'line-break-chars' => Postman_Zend_Mime::LINEEND
+ )
+ );
+ if (!is_resource($filter)) {
+ require_once 'Zend/Mime/Exception.php';
+ throw new Postman_Zend_Mime_Exception(
+ 'Failed to append quoted-printable filter'
+ );
+ }
+ break;
+
+ case Postman_Zend_Mime::ENCODING_BASE64:
+ $filter = stream_filter_append(
+ $this->_content,
+ 'convert.base64-encode',
+ STREAM_FILTER_READ,
+ array(
+ 'line-length' => 76,
+ 'line-break-chars' => Postman_Zend_Mime::LINEEND
+ )
+ );
+ if (!is_resource($filter)) {
+ require_once 'Zend/Mime/Exception.php';
+ throw new Postman_Zend_Mime_Exception(
+ 'Failed to append base64 filter'
+ );
+ }
+ break;
+
+ default:
+ }
+
+ return $this->_content;
+ }
+
+ /**
+ * Get the Content of the current Mime Part in the given encoding.
+ *
+ * @param string $EOL Line end; defaults to {@link Postman_Zend_Mime::LINEEND}
+ * @throws Postman_Zend_Mime_Exception
+ * @return string
+ */
+ public function getContent($EOL = Postman_Zend_Mime::LINEEND)
+ {
+ if ($this->_isStream) {
+ return stream_get_contents($this->getEncodedStream());
+ } else {
+ return Postman_Zend_Mime::encode($this->_content, $this->encoding, $EOL);
+ }
+ }
+
+ /**
+ * Get the RAW unencoded content from this part
+ *
+ * @return string
+ */
+ public function getRawContent()
+ {
+ if ($this->_isStream) {
+ return stream_get_contents($this->_content);
+ } else {
+ return $this->_content;
+ }
+ }
+
+ /**
+ * Create and return the array of headers for this MIME part
+ *
+ * @param string $EOL Line end; defaults to {@link Postman_Zend_Mime::LINEEND}
+ * @return array
+ */
+ public function getHeadersArray($EOL = Postman_Zend_Mime::LINEEND)
+ {
+ $headers = array();
+
+ $contentType = $this->type;
+ if ($this->charset) {
+ $contentType .= '; charset=' . $this->charset;
+ }
+
+ if ($this->boundary) {
+ $contentType .= ';' . $EOL
+ . " boundary=\"" . $this->boundary . '"';
+ }
+
+ $headers[] = array(
+ 'Content-Type',
+ $contentType
+ );
+
+ if ($this->encoding) {
+ $headers[] = array(
+ 'Content-Transfer-Encoding',
+ $this->encoding
+ );
+ }
+
+ if ($this->id) {
+ $headers[] = array(
+ 'Content-ID',
+ '<' . $this->id . '>'
+ );
+ }
+
+ if ($this->disposition) {
+ $disposition = $this->disposition;
+ if ($this->filename) {
+ $disposition .= '; filename="' . $this->filename . '"';
+ }
+ $headers[] = array(
+ 'Content-Disposition',
+ $disposition
+ );
+ }
+
+ if ($this->description) {
+ $headers[] = array(
+ 'Content-Description',
+ $this->description
+ );
+ }
+
+ if ($this->location) {
+ $headers[] = array(
+ 'Content-Location',
+ $this->location
+ );
+ }
+
+ if ($this->language) {
+ $headers[] = array(
+ 'Content-Language',
+ $this->language
+ );
+ }
+
+ return $headers;
+ }
+
+ /**
+ * Return the headers for this part as a string
+ *
+ * @param string $EOL Line end; defaults to {@link Postman_Zend_Mime::LINEEND}
+ * @return string
+ */
+ public function getHeaders($EOL = Postman_Zend_Mime::LINEEND)
+ {
+ $res = '';
+ foreach ($this->getHeadersArray($EOL) as $header) {
+ $res .= $header[0] . ': ' . $header[1] . $EOL;
+ }
+
+ return $res;
+ }
+}