Función mail() en PHP

Me llamo jose maría y estoy realizando un sitio web. La verdad para ser sincero no se mucho de código PHP, sin embargo entiendo la lógica de estos lenguaje spor lo que a veces que me bajo scrpts comprendo las funciones del mismo. El casi esta en lo siguiente, he querido hacer un formulario en mi sitio en donde el usuario pueda enviar algo así como sus comentarios, la función mail me sale muy bien, el problema radica en que cuando quiero que por ejemplo me envíen más datos como edad, sexo, correo electrónico y muchos más, este no lo hace ya que al parecer la función mail solo admite 4 parámetros, que creo que son el destinatario, encabezado, el mensaje y el remitente algo así.
¿Cómo puedo hacerle para que se me puedan enviar más datos a mi correo? ¿Y cómo puedo hacer que cuando se envíen correctamente me envíe a otra página donde diga algo así como "tu mensaje ha sido enviado correctamente"? Pero una página personalizada por mi.

5 Respuestas

Respuesta
1
Si lo que quieres es recibir todos los datos por email, pero utilizando un formulario con varios campos, puedes construir un único email con todos esos campos:
<?
$texto = array();
$texto[] = "Nombre: " . $HTTP_POST_VARS['nombre'];
$texto[] = "Apellidos: " . $HTTP_POST_VARS['apellidos'];
$texto[] = "Email: " . $HTTP_POST_VARS['email'];
//.... etc
$mensaje = implode("\n",$texto);
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: php\n";
$headers .= "From: \"[email protected]\"\n";
if (mail("[email protected]", "Nuevo usuario", $mensaje, $headers))
{
echo "El mensaje se ha enviado";
}
else
{
echo "No se ha podido enviar el mensaje";
}
}
?>
Hay que decir que si mail() devuelve true no quiere decir que el mensaje se haya enviado, sino que se ha puesto en la cola para su envío.
Respuesta
1
En el siguiente tutorial, se explica como hacerlo, detalladamente y están todos los ejemplos:
http://www.programacion.net/php/articulo/phpmailer/
Utiliza esto que te doy que te aseguro que te ahorraran problemas a futuro.
y soluciona tambien lo del remitente de la funcion mail();
Respuesta
1
Te paso un script "demo", y supongo que con eso te alcanza, y sino me pides más ayuda y lo vamos mejorando:
Supongamos:
Comentarios.html:
<html>
<head><title>Deje sus comentarios</title>
</head>
<body>
<form action="mandaelmail.php" method="post">
Nombre:?<input type="text" name="Nombre"><br>
Domicilio:?<input type="text" name="Domicilio"><br>
Telefono:?<input type="text" name="Telefono"><br>
<input type="submit" name="Enviar">
</body>
</html>
Bien.. hasta ahí es una página que contiene todos los pedidos, ahora, todos esos campos INGRESARAN como variables a tu próximo script:
mandaelmail.php
<?php
$textomail="Hola, te ha llegado un mensaje de " . $_POST['Nombre'] . " que dice domiciliarse en " . $_POST['Domicilio'] . " y su teléfono ser " . $_POST['Telefono'] . " blah blah blah";
mail("[email protected]","Un mail de la web",$textomail,"From: [email protected]\n");
?>
<html>
<title>Muchas Gracias</title>
<body>
Muchas Gracias por su correo Señor <?php echo $_POST['Nombre'];?><br>
Salu2
</body>
</html>
Bueno.. espero que puedas darte cuenta de como agregar más información.
Que tal, oye ya probé el código que me diste y si me funciono muy bien, pero tengo una duda ¿como le hago para que los datos que van en el mensaje principal estén por renglones, por ejemplo:
Persona que escribió: Panchito
Domicilio: XXXXXXX
Teléfono: XXXXXX
Algo así y no que me salga como esta en el script:
persona que escribio: panchito domicilio: xxxxxx telefono xxxxxx
O sea no quiero que me salga todo seguido sino por renglones, espero que no sea mucha molestia, lo demás lo comprendí muy bien.
Sale, voy a probarlo y haber que tal va. Gracias
Simplemente agrega \r\n
es decir:
$textomail="Hola, te ha llegado un mensaje de " . $_POST['Nombre'] . "\r\n que dice domiciliarse en " . $_POST['Domicilio'] . "\r\n y su teléfono ser " . $_POST['Telefono'] . "\r\n blah blah blah";
UN COMENTARIO: no utilices renglones totalmente en blanco:
\r\n\r\n porque el servidor lo interpreta como fin de mensaje
(no estoy seguro de haberlo probado, pero para no confundirte utiliza \r\n \r\n
)
Respuesta
1
Jose María:
Bueno realmente lo que quieres se soluciona fácilmente, simplemente recibes todos los datos del formulario como edad, sexo, dirección, ciudad, etc..
Al recibirlos simplemente metes esas variables en una sola variable llamada ejemplo: $cuerpo_mensaje = "$edad\n$sexo\n$direccion\n$ciudad";
y en la funcion mail colocas:
<?
mail("[email protected],[email protected]","asuntillo","$cuerpo_mensaje")
?>
Para lo de la página personalizada, hacerse la página por ejemplo respuesta_email.php o respuesta_email.html y después de la función mail en la página que envía el email, colocas el siguiente código que redirecciona a la página que quieres:
<script LANGUAGE="JavaScript">
var pagina="http://www.tusitio.com/respuesta_email.php"
function redireccionar()
{
location.href=pagina
}
setTimeout ("redireccionar()", 1000);
</script>
// Los 1000 es el tiempo que tarda en redireciconar lo puedes variar a tu gusto.
Cualquier cosa me cuentas, disculpa la demora pero estaba viajando.
Bye
Almonato
Respuesta
1
Perdón por la taardanza:
En efecto el mail tiene 4 parámetros, y donde debes de poner info es en el mensaje por ejemplo
$mensaj ="aqui se pone todo lo que tu quieres que aparesca en elcuerpo del mail";
Y ya después mandas llamar la función mial con los parámetros correspondientes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas