Comunidad de diseño web y desarrollo en internet online

formulario de contacto en PHP

Citar            
MensajeEscrito el 22 Sep 2009 05:14 pm
* Tengo el siguiente formulario en PHP y necesito saber qué debo agregar para que en el mail que me envía me tome atributos HTML (por ejemplo negrita en el nombre o cambiar el tipo de letra a Arial):


<?
$to = $_POST['to'];
$subject = $_POST['subject'];
$nom = $_POST['nom'];
$telefono = $_POST['telefono'];
$emp= $_POST['emp'];
$mailfrom = $_POST['mailfrom'];
$body = $_POST['body'];


$to = "[email protected]";
$subject = "Consulta desde la WEB";
$msg = "<b>Nombre:</b> $nom\n";
$msg .= "Empresa: $emp\n";
$msg .= "Tel: $telefono\n";
$msg .= "E-mail: $mailfrom\n";
$msg .= "Comentarios: $body\n";
mail($to, $subject, $msg, "From: $nom");

?>

* Tambien necesito saber cómo hacer para que, si bien en el remitente del mail me escribe el nombre del destinatario, cuando pongo "RESPONDER" desde el outlook me responda a su direccion de mail.

Por pablobarcos

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Nov 2009 12:09 am
Hola Pablobarcos,

La mejor manera sería enviar también las cabeceras, te pongo el código que yo uso a ver si te vale.

Pongo también la función htmlentities para recibir el mail con los acentos y las ñ correctamente.

Código PHP :

<?php
function caracteres_html($texto){
      $texto = htmlentities($texto, ENT_NOQUOTES, 'UTF-8'); // Convertir caracteres especiales a entidades
      $texto = htmlspecialchars_decode($texto, ENT_NOQUOTES); // Dejar <, & y > como estaban
      return $texto;
  }

//estas variables las usaremos en el comando 'mail()' para costruir el email.

   //DEBE CAMBIAR EL VALOR DE $destinatario por la dirección de correo que va a recibir el email:
   $destinatario="[email protected]";
        $tipo="html";
   
   $nombre = caracteres_html($_POST['nombre']);
   $tel = caracteres_html($_POST['telefono']);
   $emp = caracteres_html($_POST['emp']);
   $mail = caracteres_html($_POST['mail']);
   $comentarios = caracteres_html($_POST['body']);

   //estos datos se usaran como cabecera del email.
   /*$cabeceras="MIME-Version: 1.0\r\n";
   $cabeceras.="X-Mailer: PHP/" . phpversion() . " \r\n";
   $cabeceras.= "Content-type: text/html; charset=utf-8\r\n";*/
   $cabeceras="Content-type: text/html\n";
   $cabeceras.="From: Consulta desde la WEB <[email protected]> \r\n";
   $cabeceras.="Reply-To: {$mail}\r\n";

   //el asunto del mensaje:
   $asunto=caracteres_html($_POST['subject']);

/*
el comando 'mail(destinatario,asunto,cuerpo del mensaje, [parametros adicionales])'
 envia un email y devuelve true si el email fue aceptado para su envio, 
 encaso contrario devuenve false.
*/


 if(mail($destinatario, $asunto, "<html> <b>$nombre</b> ha enviado una consulta a traves desde la web<br><br/> 
   <b>Nombre:</b> $nombre <br/>
   <b>Empresa:</b> $emp<br/>
   <b>Telefono:</b> $tel<br/>
   <b>E-mail:</b> $mail<br/><br/>
   <b>Comentarios:</b> $comentarios<br/><br/><br/>

   PRUEBA FORM<br/>",$cabeceras)){ ?>
<? echo "enviado"; } else {  echo "no enviado"; }  ?>


Con esto podrás responder directamente al que te lo ha enviado, esto es debido al envío de las cabeceras, más concretamente:

Código :

$cabeceras="Content-type: text/html\n";

Donde esto te indica el formato del mail (html)

Código :

$cabeceras.="From: Consulta desde la WEB <[email protected]> \r\n";

Esta parte es de donde viene (Form que aparece cuando te llega el mail)

Código :

 $cabeceras.="Reply-To: {$mail}\r\n";

Y este es el que dice a quien tiene que responder

aplicándolo aquí:

Código :

 if(mail($destinatario, $asunto, $msg, $cabeceras)){  echo "enviado"; } else {  echo "no enviado"; }


Espero que te valga.

Salu2

Por azdream

50 de clabLevel



 

Diseño Web, Marketing Digital y Artes Gráficas

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.