예제 #1
0
 /**
  * Envia un email
  *
  * @param email_adress $para La dirección del destinatario
  * @param string $asunto El texto del asunto
  * @param string $mensaje El texto de mensaje
  * @param email_adress $de La dirección del remitente. Opcional
  * @param string $deNombre El nombre del remitente. Opcional
  * @param array $conCopia Destinatarios con copia. Opcional
  * @param array $conCopiaOculta Destinatarios con copia oculta. Opcional
  * @param array $adjuntos Array con los nombres de los ficheros adjuntos. Opcional
  * @return string Mensaje de exito o fracaso al enviar
  */
 public function send($para, $asunto, $mensaje, $de = '', $deNombre = '', $conCopia = '', $conCopiaOculta = '', $adjuntos = array())
 {
     if ($this->valida($para, $mensaje)) {
         if ($de == '') {
             $de = $this->config['from'];
         }
         if (trim($de) != '') {
             $this->mailer->From = $de;
         }
         if ($deNombre == '') {
             $deNombre = $this->config['from_name'];
         }
         if (trim($deNombre) != '') {
             $this->mailer->FromName = $deNombre;
         }
         // Create a message
         $message = Swift_Message::newInstance($asunto)->setContentType('text/html')->setFrom(array($de => $deNombre))->setTo(array($para))->setReadReceiptTo($de)->setPriority(2)->setBody($mensaje);
         if ($conCopia) {
             if (is_array($conCopia)) {
                 $message->setCc($conCopia);
             } else {
                 $message->setCc(array($conCopia));
             }
         }
         if ($conCopiaOculta) {
             if (is_array($conCopiaOculta)) {
                 $message->setBcc($conCopiaOculta);
             } else {
                 $message->setBcc(array($conCopiaOculta));
             }
         }
         foreach ($adjuntos as $adjunto) {
             if (trim($adjunto)) {
                 $message->attach(Swift_Attachment::fromPath($adjunto));
             }
         }
         $nEnvios = $this->mailer->send($message);
         if (!$nEnvios) {
             $this->mensaje[] = "Fallo al enviar a {$para}.";
         }
     }
     $ok = count($this->mensaje) == 0;
     if ($this->config['save_sends']) {
         // Anotar en la bandeja de salida
         // -------------------------------------------------
         $mailBox = new EmailBox();
         $mailBox->setIp($_SERVER['REMOTE_ADDR']);
         $mailBox->setDe($de);
         $mailBox->setPara($para);
         $mailBox->setCC($conCopia);
         $mailBox->setCCO($conCopiaOculta);
         $mailBox->setAsunto($asunto);
         $mailBox->setMensaje($mensaje);
         $mailBox->setAdjuntos(json_encode($adjuntos));
         $mailBox->setOk($ok);
         $mailBox->setSmtp(json_encode($this->config));
         $mailBox->setObservations(json_encode($this->mensaje));
         $mailBox->create();
         unset($mailBox);
         //--------------------------------------------------
     }
     return $ok;
 }