Mega Code Archive

 
Categories / Php / Email
 

How to send e-mail with attachments ( with some corrections )

<?PHP require("Email.phtml"); $mensaje = new Correo(); $mensaje->Tema = "Hi everybody Hola "; $mensaje->Encabezados["Reply-To"] = "somebody@hotmail.com"; $mensaje->Encabezados["X-Extra-Header"] = "Pointless Header v3.0"; $mensaje->Cuerpo = "Subject or Este es el cuerpo del Mensaje\n"; $mensaje->Archivos[0] = "portada1.jpg"; $mensaje->Archivos[1] = "photos.gif"; // Ahora envio el mensaje $mensaje->Enviar(); ?> # THIS is the class... Esta es la funcion: #------------------------------------------------------------------ <?PHP /* DEFINO LAS VARIABLES A UTILIZAR */ class Correo { var $Dequien; // Email de la persona que envia el correo var $Aquienva; // Email de la persona a la que va el correo var $Tema; // Tema o Encabezado del Mensaje var $Encabezados; // Es un "hash" de encabezados adicionales donde // NombreDelEncabezado => ValordelEncabezado var $Archivos; // Un Arreglo de los archivos anexos o pegados var $Cuerpo; // Es el cuerpo del Mensaje // Funcion que me inicializa las variables function Correo() { $this->Dequien = ""; $this->Aquienva = ""; $this->Tema = ""; $this->Encabezados = array(); $this->Archivos = array(); $this->Cuerpo = ""; } // Funcion que me dice que tipo MIME es; cuantos tipos hay ? NO LO SE function Tipomime ($Archivo) { $Archivo = basename($Archivo); if(strrchr($Archivo,".") == false) { return("application/octet-stream"); } $Ext = strrchr($Archivo,"."); echo ("La extencion es: $Ext"); switch($Ext) { case ".gif": return "IMAGE/gif"; break; case ".gz": return "APPLICATION/x-gzip"; case ".htm": case ".html": return "TEXT/html"; break; case ".jpg": return "IMAGE/jpeg"; break; case ".tar": return "APPLICATION/x-tar"; break; case ".txt": return "TEXT/PLAIN"; break; case ".zip": return "APPLICATION/zip"; break; default: return "APPLICATION/octet-stream"; break; } // Del Switch } // De la Funcion TipoMime // Funcion principal que enviara el mensaje function Enviar() { $Ruta_a_sendmail = "/usr/lib/sendmail"; $fp = popen( "$Ruta_a_sendmail -t", "w"); $num = fputs($fp, "To: $this->Aquien \n"); $num += fputs($fp, "From: $this->Dequien\n"); $num += fputs($fp, "Subject: $this->Tema\n"); //Escribo ahora los encabezados reset($this->Encabezados); while(list($Encanombre,$Encavalor) = each($this->Encabezados)) { fwrite($fp,$Encanombre . ": " . $Encavalor . "\n"); } //Verifico si van archivos Anexos if(count($this->Archivos) > 0) { //Escribo los encabezados o formato usado por MIME fwrite($fp,"MIME-Version: 1.0\n"); fwrite($fp,"Content-Type: MULTIPART/MIXED; BOUNDARY=\"583556639-846026301- 931902235=:11839\"\n"); fwrite($fp,"Status: RO\n"); fwrite($fp,"X-Status:\n"); fwrite($fp," This message is in MIME format. The first part should be readable text,\n"); fwrite($fp," while the remaining parts are likely unreadable without MIME-aware tools.\n"); fwrite($fp," Send mail to mime@docserver.cac.washington.edu for more info.\n"); fwrite($fp,"\n"); //Ahora escribo el mensaje fwrite($fp,"--583556639-846026301-931902235=:11839\n"); fwrite($fp,"Content-Type: TEXT/PLAIN; charset=US-ASCII\n"); fwrite($fp,"\n"); fwrite($fp,$this->Cuerpo); fwrite($fp,"\n"); // Ahora proceso cada uno de los archivos anexos while(list($key, $Archivos_name) = each($this->Archivos)) { fwrite($fp,"--583556639-846026301-931902235=:11839\n"); fwrite($fp,"Content-Type: " . $this->Tipomime($Archivos_name) . "; name=\"" .basename ($Archivos_name) . "\"\n"); fwrite($fp,"Content-Transfer-Encoding: BASE64\n"); fwrite($fp,"Content-ID:\n"); fwrite($fp,"Content-Description:\n"); fwrite($fp,"\n"); // Ahora lo convierto $pp = popen("mimencode -b $Archivos_name","r"); while(!feof($pp)) { $datos = fread($pp,4096); fwrite($fp,$datos); } pclose($pp); } fwrite ($fp,"--583556639-846026301-931902235=:11839--"); } else { // No existen archivos adjuntos fwrite ($fp,"\n"); fwrite ($fp,"$this->Cuerpo"); } pclose($fp); } // Termina la Funcion enviar } // De la clase Correo // TERMINA EL CODIGO PHP ?>