Envío de email HTML con PHP
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");
?>
psycho
Otra opción es MailChimp, es supercompleto en serio.
tavo_2
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
markshock
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
casabien
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");
?>
andrewman
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.
casabien
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...
xavib
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';