Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/05/2016, 16:52
ersamupro
 
Fecha de Ingreso: julio-2010
Mensajes: 37
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Problema al ejecutar formulario de contacto

Bueno parece que he localizado el problema, de todas formas lo comparto para que mas gente le de uso a éste codigo, ya que no necesitas hacer ningun archivo externo para el formulario, lo coje directamente del codigo php.

El principal problema es que me mandaba los correos al correo SPAM, por el resto funciona perfectamente, no es mas que cojer este codigo, pegarlo en un archivo .php, se le añade el correo tuyo y listo, todos los class los puedes modificar y funciona a la perfeccion.

Lo del correo spam lo he solucionado añadiendole unos headers al código, así van directos a la bandeja de entrada, aquí pueden verlo y donde situo los headers en éste código:


Código:
                                                                $nombre=$_REQUEST['nombre'];
								$email=$_REQUEST['email'];
								$mensaje=$_REQUEST['mensaje'];
								$correo = trim($_POST['email']);
								
								$headers = "MIME-Version:1.0;\r|n";
								$headers .= "Content-type: text/html \r\n charset='iso-8859-1; \r\n'";
								$headers .= "$from \r\n";
								$headers .= "To: $email \r\n Subject: $subject \r\n";
								
								if (($nombre=="")||($email=="")||($mensaje==""))
								{
								echo "<h5 class='animated delay2 bounce'><img src='./images/mal.png' width='30px' height='30px'> <strong style='color:white'>Falta algun campo obligatorio por rellenar.<br><br>Por favor, complete los datos que falten del formulario <a href='javascript:history.back(1)'>pinchando aquí</a>.</strong></h5>";
								}
Tambien he duplicado 1 linea de "$email_mensaje" la de nombre, ya que no aparecia en el correo y al duplicarla sí:

Código:
 
$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
$email_mensaje .= "E-mail: " . $_POST['email'] . "\n";
$email_mensaje .= "Teléfono: " . $_POST['telefono'] . "\n";
$email_mensaje .= "Comentario: " . $_POST['mensaje'] . "\n\n";

Y nada chicos, os adjunto todo el codigo funcionando a la perfección para que puedan utilizarlo, y un par de capturas de como se ve el e-mail al que lo recibe, he pintado de rojo lo principal a modificar.


Código:
 <h3>Formulario de Contacto</h3>

						
						
						<h5 id="obligatext"><font color="red">*</font> <u>Campos obligatorios</u></h5>
					<br>
					<?php
						$action=$_REQUEST['action'];
						if ($action=="")    /* display the contact form */
							{
					?>
							<form  action="" method="POST" enctype="multipart/form-data">
							<input id="label" type="hidden" name="action" value="submit" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Nombre:<font color="red">*</font></h5>
						
							<input id="label" name="nombre" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">E-Mail:<font color="red">*</font></h5>
							
							<input id="label" name="email" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Teléfono de Contacto:</h5>
						
							<input id="label" name="telefono" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>				
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Mensaje:<font color="red">*</font></h5>
					
							<textarea name="mensaje" rows="7" cols="100%" class="animated delay2 fadeInRight" style="padding: 5px;"></textarea>
							
							<br><br>
							<input id="submit_button" type="submit" value="Enviar" class="animated delay4 fadeInUp" />
							
							</form>
					<?php
							} 
						
							
					else {
								// Marco los campos obligatorios
								$nombre=$_REQUEST['nombre'];
								$email=$_REQUEST['email'];
								$mensaje=$_REQUEST['mensaje'];
								$correo = trim($_POST['email']);
								
								$headers = "MIME-Version:1.0;\r|n";
								$headers .= "Content-type: text/html \r\n charset='iso-8859-1; \r\n'";
								$headers .= "$from \r\n";
								$headers .= "To: $email \r\n Subject: $subject \r\n";
								
								if (($nombre=="")||($email=="")||($mensaje==""))
								{
								echo "<h5 class='animated delay2 bounce'><img src='./images/mal.png' width='30px' height='30px'> <strong style='color:white'>Falta algun campo obligatorio por rellenar.<br><br>Por favor, complete los datos que falten del formulario <a href='javascript:history.back(1)'>pinchando aquí</a>.</strong></h5>";
								}
								
								else{ 
										if(!preg_match("/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/", $_POST['email'])) {
										
										echo "<h5 class='animated delay2 bounce'>
										<img src='./images/mal.png' width='30px' height='30px'> 
										E-mail incorrecto
										<br><br>
										<a href='javascript:history.back(1)'>< Volver a corregirlo</a></h5> ";
										}
										
										else{	
												if(
												!isset($_POST['nombre']) ||
												!isset($_POST['email']) ||
												!isset($_POST['telefono']) ||
												!isset($_POST['mensaje'])
												) 
												
												$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
												$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
												$email_mensaje .= "E-mail: " . $_POST['email'] . "\n";
												$email_mensaje .= "Teléfono: " . $_POST['telefono'] . "\n";
												$email_mensaje .= "Comentario: " . $_POST['mensaje'] . "\n\n";
												
												// Ahora se envía el e-mail usando la función mail() de PHP
													$result = 'E-mail enviado correctamente';   
													$from="From: $nombre<$email>\r\nReturn-path: $email";
													$subject="**Escribe el asunto con el que recibiras el e-mail**";
													mail("**vuestrocorreo***@***.**", $subject, $email_mensaje, $from);
													echo "<h5 class='animated delay2 bounce'>
													<img src='./images/bien.png' width='30px' height='30px'> 
													Mensaje enviado!
													<br><br>
													<a href='javascript:history.back(1)'>< Volver atrás</a>
													<br><br>
													<a href='http://www.**poner el home de la web**.com'> < Volver al Inicio</a></h5>";
											}
									}
							}
					?>
Enlace Formulario HTML

Enlace Formulario HTML 2

Enlace Bandeja de entrada en correo

Enlace Mensaje Recibido


Espero que os sirva a todos chicos y gracias por la ayuda :)