Foros del Web » Programando para Internet » PHP »

formulario de contacto con formato html

Estas en el tema de formulario de contacto con formato html en el foro de PHP en Foros del Web. Hola a todos! escribo para ver si alguien me puede dar una mano o una pista. Resulta que tengo un formulario de contacto que necesito ...
  #1 (permalink)  
Antiguo 13/01/2009, 14:18
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
formulario de contacto con formato html

Hola a todos!
escribo para ver si alguien me puede dar una mano o una pista.
Resulta que tengo un formulario de contacto que necesito mande un mail con formato html.
Esto es asi porque quien lo recibe lo hace desde el outlook y tiene configurada una firma con html entonces necesita que el mensaje que entre tenga el mismo formato.
Esto no necesariamente es asi ya que el outlook express tiene la opcion de descartar el formato del mensaje entrante y responder el en formato que uno quiera... entonces por ese lado el problema fue resuelto.
O sea... si bien el mensaje no entra con el formato que tiene que entrar... al menos sale con formato html y la firma y todos felices.
Sin embargo yo no lo estoy ya que no pude descular este tema...
Expongo mi codigo para ver si alguien se da cuenta cual es el problema.
El formulario tiene una serie de campos y llama a un archivo llamado send.php

El codigo de este send.php es el siguiente:

/////////////////////////////////////////////////////////////////////////////////////////////////
<?php
$mensaje = $_POST['mensaje'];
$nombre = $_POST['nombre'];
$empresa = $_POST['empresa'];
$telefono = $_POST['telefono'];
$movil = $_POST['movil'];
$mail = $_POST['mail'];
$localidad = $_POST['localidad'];
$prov = $_POST['prov'];
$pais = $_POST['pais'];
$depto = $_POST['depto'];

if($nombre == "" || $empresa == "" || $telefono == "" || $mail == "" || $localidad == "" || $prov == "" || $pais == "" || $mensaje == ""){
$error=1;
}

elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$mail)){
$error=2;
}


if($error==1){
echo "No ha completado todos los campos requeridosaeiou.<BR><A HREF=\"javascript:history.back()\">atras/back</A>.<BR>";
}

elseif($error==2){
echo "El correo electronico es invalido!<BR> <A HREF=\"javascript:history.back()\">atras/back</A>.<BR>";
}

else{
$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/html";

$mensaje = "
<html>
<body>
DATOS DEL CONTACTO\r\n
Nombre del contacto: " . $nombre . " \r\n
Empresa: " . $empresa . " \r\n
Telefono: " . $telefono . " \r\n
Telefono Celular: " . $movil . " \r\n
DATOS DE LA EMPRESA \r\n
Empresa: " . $empresa . " \r\n
Localidad: " . $localidad . " \r\n
Provincia: " . $prov . " \r\n
Pais: " . $pais . " \r\n
MENSAJE \r\n
Mensaje: " . $_POST['mensaje'] . " \r\n
Enviado el " . date('d/m/Y', time());" \r\n
</body>
</html>
";

$para = ' '. $depto . '';
$asunto = 'Formulario de contacto desde sitio web';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Su mensaje fue enviado correctamente. A la brevedad nos pondremos en contacto con Ud.';
}
?>
/////////////////////////////////////////////////////////////////////////////////////////////////

Espero alguien me pueda ayudar ya que realmente no se que mas probar.
Muchas gracias a todos...

Luciano
  #2 (permalink)  
Antiguo 13/01/2009, 14:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: formulario de contacto con formato html

En el cuerpo de tu mensaje, donde quieras un salto de linea teclea <br />
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/01/2009, 14:27
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: formulario de contacto con formato html

Hola Triby!
Ya lo probe eso y hace exactamente lo mismo.
En realidad asi como esta pone los saltos de linea... asi que creo que eso no es.
Gracias igual!
  #4 (permalink)  
Antiguo 13/01/2009, 14:35
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 17 años
Puntos: 18
Respuesta: formulario de contacto con formato html

en vez de utilizar \r\n utiliza <br />, por otra parte si tu variable $mensaje proviene de un textarea, utiliza la función nl2br().

suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #5 (permalink)  
Antiguo 13/01/2009, 14:36
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: formulario de contacto con formato html

Hola argy!
Como seria la sintaxis de uso de esa variable?
  #6 (permalink)  
Antiguo 13/01/2009, 14:37
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 17 años
Puntos: 18
Respuesta: formulario de contacto con formato html

$mensaje=nl2br($_POST['mensaje']);
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #7 (permalink)  
Antiguo 13/01/2009, 14:39
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: formulario de contacto con formato html

Perfecto! ya lo pruebo. Pero que pasa con los otros campos (o todo el mensaje) que me lo sigue tomando como texto en lugar de html?
  #8 (permalink)  
Antiguo 13/01/2009, 14:48
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 17 años
Puntos: 18
Respuesta: formulario de contacto con formato html

porque decodificas el mensaje con utf8_decode() si no está codificado, no estás utilizando por demás esa función.
http://www.php.net/utf8_decode
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #9 (permalink)  
Antiguo 13/01/2009, 14:56
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: formulario de contacto con formato html

porque si no le pongo eso no me salen los acentos ni caracteres especiales.
  #10 (permalink)  
Antiguo 13/01/2009, 18:36
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 7 meses
Puntos: 33
Respuesta: formulario de contacto con formato html

lucianomdq:
Creo que esa funcion utf8_decode($mensaje)
debes usarla con mas cuidado.

Te sugiero lo siguiente ->

if(mb_detect_encoding($mensaje)=="UTF-8") {
mail($para, $asunto, utf8_decode($mensaje), $header);
} else {
mail($para, $asunto, $mensaje, $header);
}

Saludos
Franco
  #11 (permalink)  
Antiguo 14/01/2009, 08:41
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Sonrisa Respuesta: formulario de contacto con formato html

Hola Franco! me parece muy bueno tu aporte... pero pensas que es por esa funcion que los mensajes no llegan con el formato html?
Gracias!
  #12 (permalink)  
Antiguo 14/01/2009, 11:54
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 7 meses
Puntos: 33
Respuesta: formulario de contacto con formato html

lucianomdq:
Francamente no te sabria afirmar.
Pero si te se decir que parece ser un problema del programa Outlook.
Creo debes probar con Eudora y otros mas a ver si obtienes diferente resultado.
Estos programas que reciben correos estan supuestos a decodificar los correos, pero pareciera que el Outlook o no lo hace o lo hace deficientemente; tambien depende de la version del Outlook, puede ser muy vieja.
Si te se decir con certeza que la gran mayoria de receptores de correos NO requieren de la funcion utf8_decode().
Saludos
Franco
P.S.Debes hacer tu mismo las pruebas.
  #13 (permalink)  
Antiguo 14/01/2009, 12:11
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: formulario de contacto con formato html

Muchas gracias Franco y a todos los que intentaron ayudar!
Voy a seguir intentando a ver que sale!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:01.