Source for file Mail.class.php

Documentation is available at Mail.class.php

  1. /**
  2.  * Содержит класс Mail
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2007
  8.  * @version $Id: fsource_energine_core_frameworkMail.class.php.html,v 1.1 2007/09/17 14:32:34 pavka Exp $
  9.  */
  10.  
  11. require_once('core/framework/Object.class.php');
  12.  
  13. /**
  14.  * Отправщик сообщения
  15.  *
  16.  * @package energine
  17.  * @subpackage core
  18.  * @final
  19.  */
  20. final class Mail extends Object {
  21.     /**
  22.      * End Of Line
  23.      *
  24.      */
  25.     const EOL = "\n";
  26.  
  27.     /**
  28.      * MimeBoundary
  29.      *
  30.      * @var string 
  31.      * @access private
  32.      */
  33.     private $MIMEBoundary;
  34.  
  35.     /**
  36.      * Тема письма
  37.      *
  38.      * @var string 
  39.      * @access private
  40.      */
  41.     private $subject = false;
  42.  
  43.     /**
  44.      * Адрес отправителя
  45.      * Формат: Имя отправителя 
  46.      * @var string 
  47.      * @access private
  48.      */
  49.     private $sender = false;
  50.  
  51.     /**
  52.      * Перечень получателей
  53.      *
  54.      * @var array 
  55.      * @access private
  56.      */
  57.     private $to = array();
  58.  
  59.     /**
  60.      * Текст сообщения
  61.      *
  62.      * @var string 
  63.      * @access private
  64.      */
  65.     private $text = false;
  66.  
  67.     /**
  68.      * Заголовки письма
  69.      *
  70.      * @var array 
  71.      * @access private
  72.      */
  73.     private $headers = array();
  74.  
  75.     /**
  76.      * Конструктор класса
  77.      *
  78.      * @return void 
  79.      */
  80.     public function __construct({
  81.         parent::__construct();
  82.         $this->MIMEBoundary =  md5(time());
  83.         $this->headers['X-Mailer: PHP v'.phpversion();
  84.         $this->headers['MIME-Version: 1.0';
  85.     }
  86.  
  87.     /**
  88.      * Устанавливает аттрибут от
  89.      *
  90.      * @param string $email 
  91.      * @param string $name 
  92.      * @return Mail 
  93.      * @access public
  94.      */
  95.  
  96.     public function setFrom($email$name false{
  97.         $this->sender = ($name)?$name.'<'.$email.'>':$email;
  98.         return $this;
  99.     }
  100.  
  101.     /**
  102.      * Устанавливает тему письма
  103.      *
  104.      * @param string $subject 
  105.      * @return Mail 
  106.      * @access public
  107.      */
  108.  
  109.     public function setSubject($subject{
  110.         $this->subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
  111.         return $this;
  112.  
  113.     }
  114.  
  115.     /**
  116.      * Добавляет получателя к списку получателей
  117.      *
  118.      * @return Mail 
  119.      * @access public
  120.      */
  121.  
  122.     public function addTo($email$name false{
  123.         $this->to[$email($name)?$name.'<'.$email.'>':$email;
  124.         return $this;
  125.     }
  126.  
  127.     /**
  128.      * Устанавливает текст сообщения
  129.      *
  130.      * @param string $text 
  131.      * @return Mail 
  132.      * @access public
  133.      */
  134.  
  135.     public function setText($text{
  136.         $this->text = $text;
  137.         return $this;
  138.     }
  139.  
  140.  
  141.     /**
  142.      * Отправляет сообщение
  143.      *
  144.      * @return boolean 
  145.      * @access public
  146.      */
  147.  
  148.     public function send({
  149.         # Common Headers
  150.         $this->headers['From: '.$this->sender;
  151.         $this->headers['Reply-To: '.$this->sender;
  152.         $this->headers['Return-Path: '.$this->sender;
  153.  
  154.  
  155.         $this->headers["Content-Type: multipart/alternative; boundary=\"".$this->MIMEBoundary."\"";
  156.  
  157.         # Text Version
  158.         $message "--".$this->MIMEBoundary.self::EOL;
  159.         $message .= "Content-Type: text/plain; charset=UTF-8".self::EOL;
  160.         $message .= "Content-Transfer-Encoding: 8bit".self::EOL;
  161.         $message .= strip_tags($this->text).self::EOL.self::EOL;
  162.  
  163.         # HTML Version
  164.         $message .= "--".$this->MIMEBoundary.self::EOL;
  165.         $message .= "Content-Type: text/html; charset=UTF-8".self::EOL;
  166.         $message .= "Content-Transfer-Encoding: 8bit".self::EOL;
  167.         $message .= ''.$this->text.' '.self::EOL.self::EOL;
  168.  
  169.         # Finished
  170.         $message .= "--".$this->MIMEBoundary."--".self::EOL.self::EOL;  // finish with two eol's for better security. see Injection.
  171.  
  172.         $headers = implode(self::EOL$this->headers);
  173.  
  174.         return mail(implode(','$this->to)$this->subject$message$headers'-f'.$this->sender);
  175.     }
  176. }

Documentation generated on Mon, 17 Sep 2007 13:30:38 +0300 by phpDocumentor 1.4.0a2