예제 #1
0
 /**
  * Send an email using the specified content, template and layout
  *
  * @param string|array $content Either an array of text lines, or a string with contents
  *  If you are rendering a template this variable will be sent to the templates as `$content`
  * @param string $template Template to use when sending email
  * @param string $layout Layout to use to enclose email body
  * @return bool Success
  */
 public function send($content = null, $template = null, $layout = null)
 {
     $lib = new CakeEmail();
     $lib->charset = $this->charset;
     $lib->headerCharset = $this->charset;
     $lib->from($this->_formatAddresses((array) $this->from));
     if (!empty($this->to)) {
         $lib->to($this->_formatAddresses((array) $this->to));
     }
     if (!empty($this->cc)) {
         $lib->cc($this->_formatAddresses((array) $this->cc));
     }
     if (!empty($this->bcc)) {
         $lib->bcc($this->_formatAddresses((array) $this->bcc));
     }
     if (!empty($this->replyTo)) {
         $lib->replyTo($this->_formatAddresses((array) $this->replyTo));
     }
     if (!empty($this->return)) {
         $lib->returnPath($this->_formatAddresses((array) $this->return));
     }
     if (!empty($this->readReceipt)) {
         $lib->readReceipt($this->_formatAddresses((array) $this->readReceipt));
     }
     $lib->subject($this->subject);
     $lib->messageID($this->messageId);
     $lib->helpers($this->_controller->helpers);
     $headers = array('X-Mailer' => $this->xMailer);
     foreach ($this->headers as $key => $value) {
         $headers['X-' . $key] = $value;
     }
     if ($this->date) {
         $headers['Date'] = $this->date;
     }
     $lib->setHeaders($headers);
     if ($template) {
         $this->template = $template;
     }
     if ($layout) {
         $this->layout = $layout;
     }
     $lib->template($this->template, $this->layout)->viewVars($this->_controller->viewVars)->emailFormat($this->sendAs);
     if (!empty($this->attachments)) {
         $lib->attachments($this->_formatAttachFiles());
     }
     $lib->transport(ucfirst($this->delivery));
     if ($this->delivery === 'mail') {
         $lib->config(array('eol' => $this->lineFeed, 'additionalParameters' => $this->additionalParams));
     } elseif ($this->delivery === 'smtp') {
         $lib->config($this->smtpOptions);
     } else {
         $lib->config(array());
     }
     $sent = $lib->send($content);
     $this->htmlMessage = $lib->message(CakeEmail::MESSAGE_HTML);
     if (empty($this->htmlMessage)) {
         $this->htmlMessage = null;
     }
     $this->textMessage = $lib->message(CakeEmail::MESSAGE_TEXT);
     if (empty($this->textMessage)) {
         $this->textMessage = null;
     }
     $this->_header = array();
     $this->_message = array();
     return $sent;
 }