Ver Mensaje Individual
  #28 (permalink)  
Antiguo 27/12/2010, 20:54
Avatar de Gambinoh
Gambinoh
 
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Formulario y código php en la misma página

A ver de momento tenemos esto y funcionando, es decir que envía mensajes con éxito apareciendo la frase "Mensaje enviado" y sin ningún fallo de entrada.

Como soy muy bestia se me ocurrió como método para anular un mail() suprimir el elemento básico de su construcción la variable $To. Con lo cual si no se rellena ningún campo aparece "Mensaje no enviado".

Más un pedazo de Warning: mail() [function.mail]: SMTP server response...

Bién la cuestión es que esto es lo único que se me ha ocurrido. Aunque hay otra manera. Si en lugar de suprimir el $To (bueno en mi caso $destino) se cambia por un correo que no existe o se "mata" a la propia función mail de alguna manera sumilar a null si es que se puede (no tengo ni idea) ya se evitaría el warning y se quedaría todo en el mensaje "Mensaje no enviado".

Así que este tema esta casi arreglado.

No se que me ha pasado que no he pensado un poco más con la lógica y me he puesto a hacer pruebas sin pensar.

Cita:
<?php
if (isset($_POST['submit']))
{

$nombre = $_POST["nombre"];
$remitente = $_POST["email"];
$asunto= $_POST["asunto"];
$mensaje= $_POST["mensaje"];

$mensaje = wordwrap($mensaje, 70);

$encabezados = "From: $remitente" . "\r\n" . "Reply-To: $remitente" . "\r\n" . 'Content-type: text/plain; charset=iso-8859-1';

if(empty($remitente)){
$destino = null;
} elseif (empty($mensaje)){
$destino = null;
} elseif (empty($asunto)) {
$destino = null;
} elseif (empty($nombre)) {
$destino = null;
} else {
$destino= "[email protected]";
}

mail($destino, $asunto, $mensaje, $encabezados) or die ("Mensaje no enviado");

echo "Mensaje enviado";
}
?>
En todo caso muchas gracias walterdevel, porque si no me hubieras respondido dandome pistas y resolviendo las cagadas que yo hacía, me habría rendido antes de llegar a esta solución.