| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606 | 
							- <?php
 - 
 - /*
 -  * This file is part of SwiftMailer.
 -  * (c) 2004-2009 Chris Corbyn
 -  *
 -  * For the full copyright and license information, please view the LICENSE
 -  * file that was distributed with this source code.
 -  */
 - 
 - 
 - /**
 -  * The default email message class.
 -  * @package Swift
 -  * @subpackage Mime
 -  * @author Chris Corbyn
 -  */
 - class Swift_Mime_SimpleMessage extends Swift_Mime_MimePart
 -   implements Swift_Mime_Message
 - {
 -   
 -   /**
 -    * Create a new SimpleMessage with $headers, $encoder and $cache.
 -    * @param Swift_Mime_HeaderSet $headers
 -    * @param Swift_Mime_ContentEncoder $encoder
 -    * @param Swift_KeyCache $cache
 -    * @param Swift_Mime_Grammar $grammar
 -    * @param string $charset
 -    */
 -   public function __construct(Swift_Mime_HeaderSet $headers,
 -     Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_Mime_Grammar $grammar, $charset = null)
 -   {
 -     parent::__construct($headers, $encoder, $cache, $grammar, $charset);
 -     $this->getHeaders()->defineOrdering(array(
 -       'Return-Path',
 -       'Sender',
 -       'Message-ID',
 -       'Date',
 -       'Subject',
 -       'From',
 -       'Reply-To',
 -       'To',
 -       'Cc',
 -       'Bcc',
 -       'MIME-Version',
 -       'Content-Type',
 -       'Content-Transfer-Encoding'
 -       ));
 -     $this->getHeaders()->setAlwaysDisplayed(
 -       array('Date', 'Message-ID', 'From')
 -       );
 -     $this->getHeaders()->addTextHeader('MIME-Version', '1.0');
 -     $this->setDate(time());
 -     $this->setId($this->getId());
 -     $this->getHeaders()->addMailboxHeader('From');
 -   }
 -   
 -   /**
 -    * Always returns {@link LEVEL_TOP} for a message instance.
 -    * @return int
 -    */
 -   public function getNestingLevel()
 -   {
 -     return self::LEVEL_TOP;
 -   }
 -   
 -   /**
 -    * Set the subject of this message.
 -    * @param string $subject
 -    */
 -   public function setSubject($subject)
 -   {
 -     if (!$this->_setHeaderFieldModel('Subject', $subject))
 -     {
 -       $this->getHeaders()->addTextHeader('Subject', $subject);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the subject of this message.
 -    * @return string
 -    */
 -   public function getSubject()
 -   {
 -     return $this->_getHeaderFieldModel('Subject');
 -   }
 -   
 -   /**
 -    * Set the date at which this message was created.
 -    * @param int $date
 -    */
 -   public function setDate($date)
 -   {
 -     if (!$this->_setHeaderFieldModel('Date', $date))
 -     {
 -       $this->getHeaders()->addDateHeader('Date', $date);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the date at which this message was created.
 -    * @return int
 -    */
 -   public function getDate()
 -   {
 -     return $this->_getHeaderFieldModel('Date');
 -   }
 -   
 -   /**
 -    * Set the return-path (the bounce address) of this message.
 -    * @param string $address
 -    */
 -   public function setReturnPath($address)
 -   {
 -     if (!$this->_setHeaderFieldModel('Return-Path', $address))
 -     {
 -       $this->getHeaders()->addPathHeader('Return-Path', $address);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the return-path (bounce address) of this message.
 -    * @return string
 -    */
 -   public function getReturnPath()
 -   {
 -     return $this->_getHeaderFieldModel('Return-Path');
 -   }
 -   
 -   /**
 -    * Set the sender of this message.
 -    * This does not override the From field, but it has a higher significance.
 -    * @param string $sender
 -    * @param string $name optional
 -    */
 -   public function setSender($address, $name = null)
 -   {
 -     if (!is_array($address) && isset($name))
 -     {
 -       $address = array($address => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('Sender', (array) $address))
 -     {
 -       $this->getHeaders()->addMailboxHeader('Sender', (array) $address);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the sender of this message.
 -    * @return string
 -    */
 -   public function getSender()
 -   {
 -     return $this->_getHeaderFieldModel('Sender');
 -   }
 -   
 -   /**
 -    * Add a From: address to this message.
 -    * 
 -    * If $name is passed this name will be associated with the address.
 -    * 
 -    * @param string $address
 -    * @param string $name optional
 -    */
 -   public function addFrom($address, $name = null)
 -   {
 -     $current = $this->getFrom();
 -     $current[$address] = $name;
 -     return $this->setFrom($current);
 -   }
 -   
 -   /**
 -    * Set the from address of this message.
 -    * 
 -    * You may pass an array of addresses if this message is from multiple people.
 -    * 
 -    * If $name is passed and the first parameter is a string, this name will be
 -    * associated with the address.
 -    * 
 -    * @param string $addresses
 -    * @param string $name optional
 -    */
 -   public function setFrom($addresses, $name = null)
 -   {
 -     if (!is_array($addresses) && isset($name))
 -     {
 -       $addresses = array($addresses => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('From', (array) $addresses))
 -     {
 -       $this->getHeaders()->addMailboxHeader('From', (array) $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the from address of this message.
 -    * 
 -    * @return string
 -    */
 -   public function getFrom()
 -   {
 -     return $this->_getHeaderFieldModel('From');
 -   }
 -   
 -   /**
 -    * Add a Reply-To: address to this message.
 -    * 
 -    * If $name is passed this name will be associated with the address.
 -    * 
 -    * @param string $address
 -    * @param string $name optional
 -    */
 -   public function addReplyTo($address, $name = null)
 -   {
 -     $current = $this->getReplyTo();
 -     $current[$address] = $name;
 -     return $this->setReplyTo($current);
 -   }
 -   
 -   /**
 -    * Set the reply-to address of this message.
 -    * 
 -    * You may pass an array of addresses if replies will go to multiple people.
 -    * 
 -    * If $name is passed and the first parameter is a string, this name will be
 -    * associated with the address.
 -    *
 -    * @param string $addresses
 -    * @param string $name optional
 -    */
 -   public function setReplyTo($addresses, $name = null)
 -   {
 -     if (!is_array($addresses) && isset($name))
 -     {
 -       $addresses = array($addresses => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses))
 -     {
 -       $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the reply-to address of this message.
 -    * 
 -    * @return string
 -    */
 -   public function getReplyTo()
 -   {
 -     return $this->_getHeaderFieldModel('Reply-To');
 -   }
 -   
 -   /**
 -    * Add a To: address to this message.
 -    * 
 -    * If $name is passed this name will be associated with the address.
 -    * 
 -    * @param string $address
 -    * @param string $name optional
 -    */
 -   public function addTo($address, $name = null)
 -   {
 -     $current = $this->getTo();
 -     $current[$address] = $name;
 -     return $this->setTo($current);
 -   }
 -   
 -   /**
 -    * Set the to addresses of this message.
 -    * 
 -    * If multiple recipients will receive the message and array should be used.
 -    * 
 -    * If $name is passed and the first parameter is a string, this name will be
 -    * associated with the address.
 -    * 
 -    * @param array $addresses
 -    * @param string $name optional
 -    */
 -   public function setTo($addresses, $name = null)
 -   {
 -     if (!is_array($addresses) && isset($name))
 -     {
 -       $addresses = array($addresses => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('To', (array) $addresses))
 -     {
 -       $this->getHeaders()->addMailboxHeader('To', (array) $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the To addresses of this message.
 -    * 
 -    * @return array
 -    */
 -   public function getTo()
 -   {
 -     return $this->_getHeaderFieldModel('To');
 -   }
 -   
 -   /**
 -    * Add a Cc: address to this message.
 -    * 
 -    * If $name is passed this name will be associated with the address.
 -    * 
 -    * @param string $address
 -    * @param string $name optional
 -    */
 -   public function addCc($address, $name = null)
 -   {
 -     $current = $this->getCc();
 -     $current[$address] = $name;
 -     return $this->setCc($current);
 -   }
 -   
 -   /**
 -    * Set the Cc addresses of this message.
 -    * 
 -    * If $name is passed and the first parameter is a string, this name will be
 -    * associated with the address.
 -    *
 -    * @param array $addresses
 -    * @param string $name optional
 -    */
 -   public function setCc($addresses, $name = null)
 -   {
 -     if (!is_array($addresses) && isset($name))
 -     {
 -       $addresses = array($addresses => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('Cc', (array) $addresses))
 -     {
 -       $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the Cc address of this message.
 -    * 
 -    * @return array
 -    */
 -   public function getCc()
 -   {
 -     return $this->_getHeaderFieldModel('Cc');
 -   }
 -   
 -   /**
 -    * Add a Bcc: address to this message.
 -    * 
 -    * If $name is passed this name will be associated with the address.
 -    * 
 -    * @param string $address
 -    * @param string $name optional
 -    */
 -   public function addBcc($address, $name = null)
 -   {
 -     $current = $this->getBcc();
 -     $current[$address] = $name;
 -     return $this->setBcc($current);
 -   }
 -   
 -   /**
 -    * Set the Bcc addresses of this message.
 -    * 
 -    * If $name is passed and the first parameter is a string, this name will be
 -    * associated with the address.
 -    * 
 -    * @param array $addresses
 -    * @param string $name optional
 -    */
 -   public function setBcc($addresses, $name = null)
 -   {
 -     if (!is_array($addresses) && isset($name))
 -     {
 -       $addresses = array($addresses => $name);
 -     }
 -     
 -     if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses))
 -     {
 -       $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the Bcc addresses of this message.
 -    * 
 -    * @return array
 -    */
 -   public function getBcc()
 -   {
 -     return $this->_getHeaderFieldModel('Bcc');
 -   }
 -   
 -   /**
 -    * Set the priority of this message.
 -    * The value is an integer where 1 is the highest priority and 5 is the lowest.
 -    * @param int $priority
 -    */
 -   public function setPriority($priority)
 -   {
 -     $priorityMap = array(
 -       1 => 'Highest',
 -       2 => 'High',
 -       3 => 'Normal',
 -       4 => 'Low',
 -       5 => 'Lowest'
 -       );
 -     $pMapKeys = array_keys($priorityMap);
 -     if ($priority > max($pMapKeys))
 -     {
 -       $priority = max($pMapKeys);
 -     }
 -     elseif ($priority < min($pMapKeys))
 -     {
 -       $priority = min($pMapKeys);
 -     }
 -     if (!$this->_setHeaderFieldModel('X-Priority',
 -       sprintf('%d (%s)', $priority, $priorityMap[$priority])))
 -     {
 -       $this->getHeaders()->addTextHeader('X-Priority',
 -         sprintf('%d (%s)', $priority, $priorityMap[$priority]));
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the priority of this message.
 -    * The returned value is an integer where 1 is the highest priority and 5
 -    * is the lowest.
 -    * @return int
 -    */
 -   public function getPriority()
 -   {
 -     list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'),
 -       '%[1-5]'
 -       );
 -     return isset($priority) ? $priority : 3;
 -   }
 -   
 -   /**
 -    * Ask for a delivery receipt from the recipient to be sent to $addresses
 -    * @param array $addresses
 -    */
 -   public function setReadReceiptTo($addresses)
 -   {
 -     if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses))
 -     {
 -       $this->getHeaders()
 -         ->addMailboxHeader('Disposition-Notification-To', $addresses);
 -     }
 -     return $this;
 -   }
 -   
 -   /**
 -    * Get the addresses to which a read-receipt will be sent.
 -    * @return string
 -    */
 -   public function getReadReceiptTo()
 -   {
 -     return $this->_getHeaderFieldModel('Disposition-Notification-To');
 -   }
 -   
 -   /**
 -    * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart.
 -    * @param Swift_Mime_MimeEntity $entity
 -    */
 -   public function attach(Swift_Mime_MimeEntity $entity)
 -   {
 -     $this->setChildren(array_merge($this->getChildren(), array($entity)));
 -     return $this;
 -   }
 -   
 -   /**
 -    * Remove an already attached entity.
 -    * @param Swift_Mime_MimeEntity $entity
 -    */
 -   public function detach(Swift_Mime_MimeEntity $entity)
 -   {
 -     $newChildren = array();
 -     foreach ($this->getChildren() as $child)
 -     {
 -       if ($entity !== $child)
 -       {
 -         $newChildren[] = $child;
 -       }
 -     }
 -     $this->setChildren($newChildren);
 -     return $this;
 -   }
 -   
 -   /**
 -    * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source.
 -    * This method should be used when embedding images or other data in a message.
 -    * @param Swift_Mime_MimeEntity $entity
 -    * @return string
 -    */
 -   public function embed(Swift_Mime_MimeEntity $entity)
 -   {
 -     $this->attach($entity);
 -     return 'cid:' . $entity->getId();
 -   }
 -   
 -   /**
 -    * Get this message as a complete string.
 -    * @return string
 -    */
 -   public function toString()
 -   {
 -     if (count($children = $this->getChildren()) > 0 && $this->getBody() != '')
 -     {
 -       $this->setChildren(array_merge(array($this->_becomeMimePart()), $children));
 -       $string = parent::toString();
 -       $this->setChildren($children);
 -     }
 -     else
 -     {
 -       $string = parent::toString();
 -     }
 -     return $string;
 -   }
 -   
 -   /**
 -    * Returns a string representation of this object.
 -    *
 -    * @return string
 -    *
 -    * @see toString()
 -    */
 -   public function __toString()
 -   {
 -     return $this->toString();
 -   }
 -   
 -   /**
 -    * Write this message to a {@link Swift_InputByteStream}.
 -    * @param Swift_InputByteStream $is
 -    */
 -   public function toByteStream(Swift_InputByteStream $is)
 -   {
 -     if (count($children = $this->getChildren()) > 0 && $this->getBody() != '')
 -     {
 -       $this->setChildren(array_merge(array($this->_becomeMimePart()), $children));
 -       parent::toByteStream($is);
 -       $this->setChildren($children);
 -     }
 -     else
 -     {
 -       parent::toByteStream($is);
 -     }
 -   }
 -   
 -   // -- Protected methods
 -   
 -   /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */
 -   protected function _getIdField()
 -   {
 -     return 'Message-ID';
 -   }
 -   
 -   // -- Private methods
 -   
 -   /** Turn the body of this message into a child of itself if needed */
 -   private function _becomeMimePart()
 -   {
 -     $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(),
 -       $this->_getCache(), $this->_getGrammar(), $this->_userCharset
 -       );
 -     $part->setContentType($this->_userContentType);
 -     $part->setBody($this->getBody());
 -     $part->setFormat($this->_userFormat);
 -     $part->setDelSp($this->_userDelSp);
 -     $part->_setNestingLevel($this->_getTopNestingLevel());
 -     return $part;
 -   }
 -   
 -   /** Get the highest nesting level nested inside this message */
 -   private function _getTopNestingLevel()
 -   {
 -     $highestLevel = $this->getNestingLevel();
 -     foreach ($this->getChildren() as $child)
 -     {
 -       $childLevel = $child->getNestingLevel();
 -       if ($highestLevel < $childLevel)
 -       {
 -         $highestLevel = $childLevel;
 -       }
 -     }
 -     return $highestLevel;
 -   }
 -   
 - }
 
 
  |