 
			
				29/02/2004, 19:34
			
			
			     |  
        |     |    |    Fecha de Ingreso: enero-2002  Ubicación: Monterrey  
						Mensajes: 2.454
					  Antigüedad: 23 años, 9 meses Puntos: 5     |        |  
       Código PHP:     <?
 /* **********************************************************************
  *
  *    Clase:            Nexus MIME Mail ('nxs_mimemail.inc.php')
  *    Version:            1.0
  *    Autor:            Alejandro Garcia Gonzalez <[email protected]>    
  *    Web:                [url]http://nexus.nuestroweb.com[/url]
  *
  * Descripcion:
  * Clase para poder enviar correos tipo MIME, con las siguientes
  * caracteristicas:
  *
  * + Solo Texto Plano
  * + HTML
  * + Texto Plano con adjuntos
  * + HTML con Adjuntos
  * + HTML con Imagenes Embebidas
  * + HTML con Imagenes Embebidas y Adjuntos
  * 
  * Esta clase esta desarrollada a partir de la exelente explicacion
  * encontrada en: [url]http://www.rinconastur.com/php/php64b.php[/url] 'Memorias
  * de un aprendiz' (Muchas Gracias). Lo demas fue revisando el codigo
  * fuente que genera Evolution ([url]www.ximian.com[/url]) y adaptarlo.
  *
  * ********************************************************************** */
   class nxs_mimemail {
     
     /* 
       * Variables Publicas
      * POR HACER: Depurar
      */
     var $mail_from = "Anonimo <[email protected]>";
     var $mail_to;
     var $mail_cc;
     var $mail_bcc;
     var $mail_subject = "Sin Asunto";
     var $mail_text;
     var $mail_html;
     var $adjuntos_indice;
     var $adjuntos = array();
     var $adjuntos_img = array();
     var $separador_mix;
     var $seperador_rel;
     var $separador_alt;
     var $mail_type;
     var $cabecera;
     var $mensaje;
     var $msg_error = "si";             // "si" | "no" | "halt"
    var $tipos_mime = array(); 
       /*
      * void nxs_mimemail();
      * Constructor.
      */
     function nxs_mimemail(){
         $this->separador_mix = "=-nxs_mix_" . md5(uniqid(rand()));
         $this->separador_rel = "=-nxs_rel_" . md5(uniqid(rand()));
         $this->separador_alt = "=-nxs_alt_" . md5(uniqid(rand()));
         $this->adjuntos_indice = 0;
         $this->tipos_mime = array(
             'gif'  => 'image/gif',
             'jpg'  => 'image/jpeg',
             'jpeg' => 'image/jpeg',
             'jpe'  => 'image/jpeg',
             'bmp'  => 'image/bmp',
             'png'  => 'image/png',
             'tif'  => 'image/tiff',
             'tiff' => 'image/tiff',
             'swf'  => 'application/x-shockwave-flash',
             'doc'  => 'application/msword',
             'xls'  => 'application/vnd.ms-excel',
             'ppt'  => 'application/vnd.ms-powerpoint',
             'pdf'  => 'application/pdf',
             'ps'   => 'application/postscript',
             'eps'  => 'application/postscript',
             'rtf'  => 'application/rtf',
             'bz2'  => 'application/x-bzip2',
             'gz'   => 'application/x-gzip',
             'tgz'  => 'application/x-gzip',
             'tar'  => 'application/x-tar',
             'zip'  => 'application/zip',
             'html' => 'text/html',
             'htm'  => 'text/html',
             'txt'  => 'text/plain',
             'css'  => 'text/css'
             );
           if(!defined('SALTO')){
             define('SALTO', "\r\n", TRUE);
         }
     }
       /*
      * void correo_de(string $mail_from, [string $nombre]);
      * Se asigna la direccion de correo del remitente. Opcionalmente
      * tambien se puede especificar el nombre del contacto.
      * $mail_from - Direccion de correo del remitente.
      * $nombre - Nombre del remitente (opcional).
      */
     function correo_de($mail_from, $nombre = ""){
         if ($this->valida_correo($mail_from)){
             if (!empty($nombre)){
                 $mail_from = "$nombre <$mail_from>";
             }
             $this->mail_from = $mail_from;
         }
         else {
             $this->mail_from = "Anonimo <[email protected]>";
         }
     }
       /*
      * bool agregar_para(string $mail_to, [string $nombre]);
      * Se asignan las direcciones de correos destino. Opcionalmente
      * tambien se puede especificar el nombre del contacto.
      * $mail_to - Direccion de correo destino.
      * $nombre - Nombre del correo destino (opcional).
      */
     function agregar_para($mail_to, $nombre = ""){
         if ($this->valida_correo($mail_to)){
             if (!empty($nombre)){
                 $mail_to = "$nombre <$mail_to>";
             }
             if (empty($this->mail_to)){
                 $this->mail_to = $mail_to;
                 return true;
             }
             else {
                 $this->mail_to .= ", " . $mail_to;
                 return true;
             }
         }
         return false;
     }
       /*
      * bool agregar_cc(string $mail_cc, [string $nombre]);
      * Se asignan las copias de correo destino. Opcionalmente
      * tambien se puede especificar el nombre del contacto.
      * $mail_cc - Direccion de copia de correo destino.
      * $nombre - Nombre del copia del correo destino (opcional).
      */
     function agregar_cc($mail_cc, $nombre = ""){
         if ($this->valida_correo($mail_cc)){
             if (!empty($nombre)){
                 $mail_cc = "$nombre <$mail_cc>";
             }
             if (empty($this->mail_cc)){
                 $this->mail_cc = $mail_cc;
                 return true;
             }
             else {
                 $this->mail_cc .= ", " . $mail_cc;
                 return true;
             }
         }
         return false;
     }
     
     /*
      * bool agregar_bcc(string $mail_bcc, [string $nombre]);
      * Se asignan las copias ocuptas de correo destino. Opcionalmente 
      * tambien se puede especificar el nombre del contacto.
      * $mail_bcc - Direccion de copia de correo destino.
      * $nombre - Nombre del correo destino (opcional).
      */
     function agregar_bcc($mail_bcc, $nombre = ""){
         if ($this->valida_correo($mail_bcc)){
             if (!empty($nombre)){
                 $mail_bcc = "$nombre <$mail_bcc>";
             }
             if (empty($this->mail_bcc)){
                 $this->mail_bcc = $mail_bcc;
                 return true;
             }
             else {
                 $this->mail_bcc .= ", " . $mail_bcc;
                 return true;
             }
         }
         return false;
     }
     
     /*
      * bool asunto(string $texto);
      * Se asigna el asunto del mensaje, en caso de no hacerlo
      * se asignara el asunto predeterminado.
      * $texto - Cadena de texto que va en el asunto.
      */
     function asunto($texto){
         if (!empty($texto)){
             $this->mail_subject = $texto;
         }
     }
       /*
      * void mensaje_texto(string $mensaje);
      * Se agrega el mensaje en texto plano.
      * $mensaje - Mensaje en texto plano.
      */
     function mensaje_texto($mensaje){
         if (!empty($mensaje)){
             $this->mail_text = $mensaje;
         }
     }
       /*
      * void mensaje_html(string $mensaje);
      * Se agrega el mensaje en html.
      * $mensaje - Mensaje en html.
      */
     function mensaje_html($mensaje){
         if (!empty($mensaje)){
             $this->mail_html = $mensaje;
         }
     }
       /*
      * void crear_correo([string $de], [string $para], [string $asunto], [string $texto], [string $html]);
      * Esta funcion se encarga de hacer un poco mas rapida la inclusion de
      * los datos basicos que se requieren para armar un correo.
      * Este solo es un atajo. Todos los valores son opcionales.
      * $de - Direccion de correo del remitente
      * $para - Direccion de correo del destinatario
      * $texto - Mensaje en Texto Plano
      * $html - Mensaje en formato HTML
      */
     function crear_correo($de = "", $para = "", $asunto = "", $texto = "", $html = ""){
         $this->correo_de($de);
         $this->correo_para($para);
         $this->asunto($asunto);
         $this->mensaje_texto($texto);
         $this->mensaje_html($html);
     }
     
     /* 
      * void agregar_adjunto(mixed $archivo, string $nombre, [string $tipo]);
      * Funcion para agregar archivos adjuntos al correo.
      * $archivo - Resultado del fopen del archivo.
      * $tipo - Tipo del archivo, predeterminadamente "application/octet-stream".
      * $nombre - Nombre del archivo.
      */
     function agregar_adjunto($archivo, $nombre, $tipo = ""){
         if (empty($tipo)){$tipo = $this->revisar_mime($nombre);}
         $this->adjuntos[$this->adjuntos_indice][archivo] = chunk_split(base64_encode($archivo));
         $this->adjuntos[$this->adjuntos_indice][nombre] = $nombre;
         $this->adjuntos[$this->adjuntos_indice][tipo] = $tipo;
         $this->adjuntos[$this->adjuntos_indice][embebido] = false;
         $this->adjuntos_indice++;
     }
       /*
      * void armar_cabecera();
      * Funcion encargada de armar la cabecera del correo.
      */
     function armar_cabecera($content_type){
         $this->cabecera = "MIME-Version: 1.0" . SALTO;
         if (!empty($this->mail_from)){
             $this->cabecera .= "Wrom: ZUIVOTQNQEMSFDULHPQQWOYIYZUNN
             $this->cabecera .= "Reply-To: " . $this->mail_from . SALTO;
         }
         if (!empty($this->mail_cc)){
             $this->cabecera .= "Cc: " . $this->mail_cc . SALTO;
         }    
         if (!empty($this->mail_bcc)){
             $this->cabecera .= "Bcc: " . $this->mail_bcc . SALTO;
         }
         $this->cabecera .= "X-Mailer: neXus MIME Mail - PHP/". phpversion() . SALTO;
         $this->cabecera .= $content_type . SALTO . SALTO;
     }       ... CONTINUA...      
				__________________  Manoloweb           |