Foros Programación Servidor

Envío de email HTML con PHP

7 7 Respuestas Martes 20 de julio, 2010
Hola,

estoy haciendo el envio de un form con PHP que llegará con estilo HTML. El problema es que aunque el enviar.php recibe las variables del formulario.php, en el html no se muestran.

Entiendo que el problema esta en la sintaxis de las "consultas" (<?php echo $dia ?>) pero no se cuál es la forma correcta de escribirlo. Dejo el código.

Gracias por adelantado :)

<?
$mailenviador =$_POST['email'];
$dia =$_POST['dia'];
$mes =$_POST['mes'];
$hora=$_POST['hora'];
$personas =$_POST['personas'];
$nombreapellidos =$_POST['nombreapellidos'];
$telefono =$_POST['telefono'];


$cuerpo = '
<html>
<head>
<title>Reserva de mesa</title>
</head>
<body>


Día: <?php echo $dia ?> de <?php echo $mes ?><br />
Hora: <?php echo $hora ?><br />
Comensales: <?php echo $personas ?><br />
Nombre: <?php echo $nombreapellidos ?><br />
Teléfono: <?php echo $hora ?><br />
Email: <?php echo $hora ?><br />


</body>
</html>
';


$headers = "MIME-Version: 1.0\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";


mail("x@x.com, $mailenviador","Reserva desde X",$cuerpo,$headers);
header("Location: http://www.x.com/reservas.php");

?>
Registrado desde 25/06/09
Número de posts: 99
  • Avatar de xavib xavib Registrado desde 05/10/04 / Número de posts: 1519
    Con la variable directamente debería funcionarte. Quita el <?php echo y el ?>.

    Si no te funcionara, otra forma de concatenar sería

    $variable = 'cadena de texto' . $var . 'más cadena de texto';
    Publicado hace 2 años
  • Avatar de albertoarandatoro albertoarandatoro Registrado desde 25/06/09 / Número de posts: 99
    Hola Xavib gracias por tu respuesta,

    si elimino el <?php echo y el ?> en el email se me muestra el resto, es decir el $hora.

    Lo extraño es que los datos los recibe, porque si paso del html y elimino el $cuerpo, y muestro las variables que recibe
    "$text = "Hora".$_POST['hora']." \n";

    se visualizan correctamente...

    Publicado hace 2 años
  • Avatar de andrewman andrewman Registrado desde 15/03/09 / Número de posts: 84
    Prueba con:

    <?php
    $mailTo = "x@x.com";
    $mailenviador =$_POST['email'];
    $dia =$_POST['dia'];
    $mes =$_POST['mes'];
    $hora=$_POST['hora'];
    $personas =$_POST['personas'];
    $nombreapellidos =$_POST['nombreapellidos'];
    $telefono =$_POST['telefono'];

    $cuerpo = "<html>\n<head>\n<title>Reserva de mesa</title>\n</head>\n<body>\n";
    $cuerpo .= "D&iacute;a: ".$dia." de ".$mes."<br />";
    $cuerpo .= "Hora: ".$hora."<br />";
    $cuerpo .= "Comensales: ".$personas."<br />";
    $cuerpo .= "Nombre: ".$nombreapellidos."<br />";
    $cuerpo .= "Tel&eacute;fono: ".$telefono."<br />";
    $cuerpo .= "Email: ".$mailenviador;
    $cuerpo .= "\n</body>\n</html>";

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

    mail($mailTo,'Reserva desde X',$cuerpo,$headers);
    header("Location: http://www.x.com/reservas.php");

    ?>

    Si vas a mezclar variables con cadenas de texto tenemos que usar comillas dobles, si sólo son cadenas de texto no afecta. Bueno supongo que debiese funcionar.
    Publicado hace 2 años
  • Avatar de albertoarandatoro albertoarandatoro Registrado desde 25/06/09 / Número de posts: 99
    Hola Andrewman,

    en efecto el problema era de las comillas dobles y simples! Ya esta solucionado y funciona perfecto, dejo el código del resultado,
    gracias!

    <?php
    $mailTo =$_POST['email'];
    $dia =$_POST['dia'];
    $mes =$_POST['mes'];
    $hora=$_POST['hora'];
    $personas =$_POST['personas'];
    $nombreapellidos =$_POST['nombreapellidos'];
    $telefono =$_POST['telefono'];

    $cuerpo = "<html>\n<head>\n<title>Reserva de mesa</title>\n</head>\n<body>\n";


    $cuerpo .="<p style='color:black; font-family:Arial, Helvetica, sans-serif; font-size:16px;'>Gracias por hacer su reserva en X<br />
    X se pondrá en contacto con usted en menos de 48h para confirmar su reserva.</p><br />
    <p style='color:#F30; font-family:Arial, Helvetica, sans-serif; font-size:16px;'>Los datos de su reserva son:</p>";


    $cuerpo .= "Día: ".$dia." de ".$mes."<br />";
    $cuerpo .= "Hora: ".$hora."<br />";
    $cuerpo .= "Comensales: ".$personas."<br />";
    $cuerpo .= "Nombre: ".$nombreapellidos."<br />";
    $cuerpo .= "Tel&eacute;fono: ".$telefono."<br />";
    $cuerpo .= "Email: ".$mailTo."<br /><br />";



    $cuerpo .= "<p style='color:#F30; font-family:Arial, Helvetica, font-weight:bold; sans-serif; font-size:11px;'>_______________________________________<br />
    <br />
    <a href='http://www.X.com' style='color:#F30; font-weight:bold; font-family:Arial, Helvetica, sans-serif; font-size:11px; '>www.X.com<br />
    info@X.com</a><br />
    </p>
    <p style='color:black; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:11px;'>93 114 31 55<br />
    Calle Ciudad (BCN)<br />
    <span style='color:#F30; font-family:Arial, Helvetica, font-weight:bold; sans-serif; font-size:11px;'>_______________________________________</span></p>";



    $cuerpo .= "\n</body>\n</html>";


    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "Cc: alberto@revistapuntiapart.com\r\n";

    mail($mailTo,'Reserva de mesaX',$cuerpo,$headers);
    header("Location: http://www.X.com/reservas.php");

    ?>
    Publicado hace 2 años
  • Avatar de markshock markshock Registrado desde 21/03/05 / Número de posts: 780
    Recomiendo usar PHPMailer para el envío, te da muchas facilidades y te resuelve muchos problemas de codificación de carácteres.

    Fácil de usar y muy practico: http://phpmailer.worxware.com/index.php
    Desarrollo web, servicios integrales en internet

    Work: http://www.estadoactivo.com
    Yo: http://www.marctorres.es
    Blog: http://www.marc-torres.com
    Publicado hace 2 años
  • Avatar de tavo... tavo... Registrado desde 06/11/09 / Número de posts: 67
    tambien esta este programa es de facil uso, a mi me ha servido bastante
    http://www.maxprog.com/site/software/internet-marketing/mass-bulk-emailer_sheet_es.php
    Publicado hace 2 años
  • Avatar de psycho psycho Registrado desde 20/05/04 / Número de posts: 297
    Otra opción es MailChimp, es supercompleto en serio.
    //////////////////////
    ///////////// blog
    /////////// twitter
    Publicado hace más de un año