08/08/2005, 16:44
|
|
Yo he programado un script para hacer esto, lo pongo a continuación.
Si necesitas más ayuda, aquí estoy (aunque no sé por cuánto tiempo más).
si no, comunícate por mi correo alvaro_gmj en yahoo punto com punto ar
Saludos. Código PHP: <? # MFEC v1.1 - Manejador de Formularios y Envío de Correo # Copyright (C) 2003 alvlin # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Para mayor comodidad # Para un servidor en Windows debe usarse \r\n $UNO="\n"; $DOS="\n\n"; # Destinatario del mensaje $para = "[email protected]"; # El famoso boundary=, necesario para mensajes con formato HTML # (lo creo y luego lo indico al generar la cabecera) $separador ="_alvlin".md5 (uniqid (rand())); # Fecha en el formato que quiero $cabecera = "Date: ".date("l j F Y G:i:s").$UNO; # Obligatoria para el formato html $cabecera .= "MIME-Version: 1.0".$UNO; # De: viene del formulario $cabecera .= "From: ".$_POST["de"].$UNO; # No necesaria pero interesante $cabecera .= "X-Mailer: PHP/". phpversion()." por alvlin".$UNO; # Especifica el contenido. Necesaria para el formato HTML $cabecera .= "Content-Type: multipart/alternative;".$UNO; # Determino el separador de partes (boundary) $cabecera .=" boundary=$separador".$DOS; # El cuerpo principal del mensaje # Se puede crear el mensaje que se quiera, # siempre que se vayan concatenando las líneas # dentro de la variable $cuerpo $cuerpo = "<html><head><title></title></head><body style='background-color : skyblue'>\n"; $cuerpo .= "<font face='Arial' color = '#808080'>"; $cuerpo .= "<h1>Datos del Formulario:</h1><ul>\n"; $cuerpo .= "<li><strong>De: </strong>".$_POST["de"]."</li>\n"; $cuerpo .= "<li><strong>Opinion del sitio: </strong>".$_POST["Opinion"]."</li>\n"; $cuerpo .= "<li><strong>Problemas de Accesibilidad: </strong>".$_POST["accesibilidad"]."</li>\n"; $cuerpo .= "<li><strong>Temas no Encontrados: </strong>".$_POST["no-encontrado"]."</li>\n"; $cuerpo .= "<li><strong>Comentarios: </strong>".$_POST["comentarios"]."</li></ul>\n"; $cuerpo .= "<hr><p>Enviado por MFEC, (c) 2003 alvlin</p>"; $cuerpo .= "</font></body></html>"; # Sustituyo <br>, <li> y <h1> y las necesarias # para formatear el texto plano, luego # elimino el resto de las etiquetas html $sin_br = eregi_replace("<br>", $UNO, $cuerpo); $sin_li = eregi_replace("<li>", "\n\t", $sin_br); $sin_h1 = eregi_replace("<h1>", "\t\t\t", $sin_li); $sin_html = strip_tags($sin_h1); # Genero la parte de texto plano, la cual # se verá en clientes de correo que no # soporten HTML. Dado que la codificación # es 7bit, no se deben usar caracteres especiales # con código ASCII superior a 127. En caso de usarse, # se verán caracteres extraños en esta parte del mensaje $texto ="--$separador".$UNO; $texto .="Content-Type: text/plain; charset=\"ISO-8859-1\"".$UNO; $texto .="Content-Transfer-Encoding: 7bit".$DOS; $texto .=$sin_html; # Esta es la parte de html # Iguales consideraciones con los caracteres # especiales que para la parte anterior. $html =$UNO."--$separador".$UNO; $html .="Content-Type: text/html; charset=\"ISO-8859-1\"".$UNO; $html .="Content-Transfer-Encoding: 7bit".$DOS; $html .= $cuerpo; $html .=$UNO."--$separador".$UNO; # Determina si se subió un archivo if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { # Si es así, crea la cabecera para el archivo adjunto $adjunto ="Content-Type: ".$HTTP_POST_FILES['archivo']['type']."; name=\""; $adjunto .=$HTTP_POST_FILES['archivo']['name']."\"".$UNO; $adjunto .="Content-Disposition: attachment; filename=\""; $adjunto .=$HTTP_POST_FILES['archivo']['name']."\"".$UNO; $adjunto .="Content-Transfer-Encoding: base64".$DOS; # abre el archivo $fp = fopen($HTTP_POST_FILES['archivo']['tmp_name'], "r"); $buff = fread($fp, filesize($HTTP_POST_FILES['archivo']['tmp_name'])); fclose($fp); # lo codifica en base64 $adjunto .=chunk_split(base64_encode($buff)); $adjunto .=$UNO."--$separador".$UNO; # genera el cuerpo del mensaje con las tres partes (texto, html y adjunto) $mensaje=$texto.$html.$adjunto; } # en caso de que no se haya subido ningún archivo # generar el cuerpo del mensaje directamente con las partes de texto y html else { $mensaje=$texto.$html; } # Sentencia final que envía el mensaje e imprime en pantalla un texto # dependiendo de si el mensaje se envió bien o no. if ( mail($para,$_POST["asunto"],$mensaje,$cabecera)) { echo "El mensaje ha sido enviado correctamente.<br /> Gracias por tomarte el tiempo para escribirlo"; } else { echo "Hubo un error al enviar el mensaje<br />\n Por favor regresa a la página anterior e intenta de nuevo"; } ?>
Última edición por AlvaroG; 22/06/2009 a las 21:55 |