Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/08/2005, 16:44
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
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($fpfilesize($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&aacute;gina anterior e intenta de nuevo"
; }
?>

Última edición por AlvaroG; 22/06/2009 a las 21:55