Problema con formulario de contacto

  • Autor Autor vickyepsilon
  • Fecha de inicio Fecha de inicio
V

vickyepsilon

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos. Estoy armando un formulario de contacto. La idea es que la persona ingrese su nombre, mail y mensaje y eso que ingreso se mande a mi mail. Este es el codigo que tengo:

En el HTML:

<form action="contact.php" method="post">
Nombre<br>
<input id="mensaje" type="text" name="cf_name"><br>
E-mail<br>
<input id="mensaje" type="text" name="cf_email"><br>
Mensaje<br>
<textarea name="cf_message"></textarea><br>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>

Y en contact.php:
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];

$mail_to = 'mail@gmail.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Gracias por su mensaje. Me comunicare con usted pronto.');
window.location = 'contacto.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('El mensaje no se envio.Por favor, envie un e-mail a mail@gmail.com');
window.location = 'contacto.html';
</script>
<?php
}
?>


No se si hay algo mal o si tengo que esperar a que el mail llegue (Lo ideal seria que llegue rápido porque es para que se contacten los clientes)

Desde ya, les agradezco cualquier ayuda
 
Fijate en spam... si es enviado por tu server lo mas seguro es que caiga en spam
 
El código esta bien debe ser problema del servidor o el correo lo detecta como spam.

¿Por qué hay más de un elemento con el mismo identificador? Debes utilizar el atributo class.
¿Por qué no colocas el texto que indica lo que debe ir en el campo dentro de un elemento label? Esto no afecta pero es una buena práctica y mejora la experiencia del visitante en tu sitio, al oprimir el texto el foco cambia al campo. Acá un ejemplo.

Entonces:
HTML:
<form action="contact.php" method="post">
<label>Nombre
<input class="mensaje" type="text" name="cf_name">
</label>
<label>E-mail
<input class="mensaje" type="text" name="cf_email">
</label>
<label>Mensaje
<textarea name="cf_message"></textarea>
</label>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>

O también:
HTML:
<form action="contact.php" method="post">
<label for="nombre">Nombre</label>
<input id="nombre" class="mensaje" type="text" name="cf_name">
<label for="email">E-mail</label>
<input id="email" class="mensaje" type="text" name="cf_email">
<label for="mensaje">Mensaje</label>
<textarea id="mensaje" name="cf_message"></textarea>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>

Más información sobre el uso de label.
 
Última edición:
Yo algunas veces he tenido problemas con la función mail en algunos hosting. Te recomiendo que utilices la clase PHPMailer. Es sencilla de usar, falla muchas menos veces y además, existe mucha documentación y ejemplos.
 
¿Estas utilizando un servidor local? Si es el caso, ejemplo xampp debes tener configurado el módulo Mercury.
 
generalmente los correos automaticos son enviados como spam
 
Hola,
Creo que puede ser un problema de la cabecera del email.
Segun el manual de php dice:
Cuando se envía un correo, este debe contener una cabecera From. Puede establecerse con el parámetro additional_headers, o puede definirse un valor predeterminaro en php.ini.
Si no se realiza esta acción se obtendrá un mensaje de error similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing (Advertencia: mail(): "sendmail_from" no establecido en php.ini o falta la cabecera personalizada "From:"). La cabecera From también establece Return-Path bajo Windows.

Y dependiendo del hosting (cosa que he comprobado), la cabecera "From:" debe ser del mismo hosting o dominio de donde estemos enviando.

Puedes probar a modificar el "From:" y poner solamente el dominio desde donde esta el script para probar si se envían los correos y luego construirla como quieras.
PHP:
$headers = "From: nuestro-dominio-sin-WW";
y después si funciona:
PHP:
$headers = "texto que queramos<loquesea@nuestro-dominio>";
 
Última edición:
Yo algunas veces he tenido problemas con la función mail en algunos hosting. Te recomiendo que utilices la clase PHPMailer. Es sencilla de usar, falla muchas menos veces y además, existe mucha documentación y ejemplos.
Ha de ser esto porque a mi ya me ha pasado que hago páginas en mi servidor y como siempre todo funciona bien y al subirlo al hosting de mi cliente su formulario de contacto simplemente ya no envía los correos, obviamente está identico y sin ningún cambio.
 
Atrás
Arriba