PHP - Formulario PHP no funciona al enviar en correo con mail()

   
Vista:

Formulario PHP no funciona al enviar en correo con mail()

Publicado por Asier (4 intervenciones) el 04/11/2013 15:17:24
Hola a todos,

Estoy haciendo un formulario para una página web y estoy teniendo muchos problemas.
La última opción que estoy tratando es esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if (!isset($_POST['email'])) {
?>
  <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    <label>
      Nombre:
      <input name="nombre" type="text" />
    </label>
    <label>
      Mensaje:
      <textarea name="mensaje" rows="6" cols="50"></textarea>
    </label>
    <input type="reset" value="Borrar" />
    <input type="submit" value="Enviar" />
  </form>
<?php
}else{
  $mensaje.= "\nNombre: ". $_POST['nombre'];
  $mensaje.= "\nMensaje: \n".$_POST['mensaje'];
  $destino= "asierch84@gmail.com";
  $remitente = $_POST['email'];
  $asunto = "Mensaje enviado por: ".$_POST['nombre'];
  mail($destino,$asunto,$mensaje,"FROM: $remitente");
?>
  <p><strong>Mensaje enviado.</strong></p>
<?php
}
?>

Es un formulario sencillo, solo se solicita al usuario nombre y comentario.
En este caso no recibo nada en el mail pero tampoco dá mensajes de error.

Un saludo y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Formulario PHP no funciona al enviar en correo con mail()

Publicado por xve (5515 intervenciones) el 04/11/2013 19:04:41
Hola Asier, no has especificado ninguna cabecera...

revisa estos mensajes... veras como se especifican:
http://www.lawebdelprogramador.com/foros/PHP/1403782-Mail%28%29_enviar_correo_con_copia_oculta.html
http://www.lawebdelprogramador.com/foros/PHP/1397219-Tengo_un_problema_con_el_PHP_de_envio_de_un_formulario.html
http://www.lawebdelprogramador.com/foros/PHP/1397315-Salto_de_linea_al_enviar_un_correo_en_formato_texto.html

De todas maneras, ten en cuenta que la instrucción mail() no siempre funciona bien... por temas de spam... te recomiendo utilizar el envío por smtp, que se envía directamente desde tu servidor de correo... es mucho mejor para los programas anti spam.

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario PHP no funciona al enviar en correo con mail()

Publicado por Elier (92 intervenciones) el 05/11/2013 21:13:48
El problema que veo es que en el formulario no hay ningun input para el email. Para que el mensaje pueda ser enviado tal vez debes modificar en el archivo php.ini las lineas

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.tuservidordecorreo.com
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = tudirecciondecorreo@tuservidordecorreo.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<html>
<head>
	<style>
		.entradas {width: 50%}
	</style>
</head>
<body>
<?php
if (!isset($_POST['submit']) || empty($_POST['email']))
{ ?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
	<label>Nombre:</label>
	<div><input class="entradas" name="nombre" type="text" /></div>
	<label>Email:</label>
	<div><input class="entradas" name="email" type="text" /></div>
	<label>Mensaje:</label>
	<div><textarea class="entradas" name="mensaje" rows="6" cols="50"></textarea></div>
	<input type="reset" value="Borrar" />
	<input type="submit" name="submit" value="Enviar" />
</form>
<?php
}
else
{
	 $mensaje = "";
	 $mensaje.= "\nNombre: ". $_POST['nombre'];
	 $mensaje.= "\nMensaje: ".$_POST['mensaje'];
	 $para = "asierch84@gmail.com";
	 $de = $_POST['email'];
	 $cabeceras = "MIME-Version: 1.0"."\r\n";
	 $cabeceras .= "Content-type: text/plain; charset=iso-8859-1"."\r\n";
	 $cabeceras .= "From: WebApp <$de>"."\r\n";
	 $asunto = "Mensaje enviado por: ".$_POST['nombre'];
	 if (mail($para,$asunto,$mensaje,$cabeceras)){
	 	echo "<p><strong>Mensaje enviado.</strong></p>";
	 }
}
?>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar