Foros del Web » Programando para Internet » PHP »

parece que envia pero no llega (formulario php)

Estas en el tema de parece que envia pero no llega (formulario php) en el foro de PHP en Foros del Web. Hola muy buenas.. tal como dice el título mi formulario no me envia los e-mail y tampoco este código me marca errores, sabrian ustedes a ...
  #1 (permalink)  
Antiguo 14/06/2017, 01:50
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 8 años, 3 meses
Puntos: 0
parece que envia pero no llega (formulario php)

Hola muy buenas.. tal como dice el título mi formulario no me envia los e-mail y tampoco este código me marca errores, sabrian ustedes a que se debe. Todo el código que mostraré se encuentra en un único archivo: contacto.php

Código PHP:
Ver original
  1. <?php
  2.                  $error    = ''; // error message
  3.                  $name     = ''; // sender's name
  4.                  $telefono = ''; // sender's telefono
  5.                  $email    = ''; // sender's email address
  6.                  $subject  = ''; // sender's subject
  7.                  $date     = ''; // sender's date
  8.                  $message  = ''; // the message itself
  9.                  $spamcheck = ''; // Spam check              
  10.          
  11.        
  12.            ini_set("sendmail_from","[email protected]");            
  13.             {
  14.                 if (isset($_POST['name'])) {
  15.                 $name = $_POST['name'];
  16.             }
  17.                  if (isset($_POST['telefono'])) {
  18.                 $telefono = $_POST['telefono'];
  19.             }
  20.            
  21.                 if (isset($_POST['email'])) {
  22.                 $email = $_POST['email'];
  23.             }
  24.            
  25.                 if (isset($_POST['subject'])) {
  26.                 $subject = $_POST['subject'];
  27.             }
  28.            
  29.                 if (isset($_POST['message'])) {
  30.                 $message = $_POST['message'];
  31.             }
  32.            
  33.                 if (isset($_POST['spamcheck'])) {
  34.                 $spamcheck = $_POST['spamcheck'];
  35.        
  36.             }  
  37.  
  38.                 if(trim($name) == '')
  39.                
  40.                 {  
  41.                     $error = '<div class="errormsg">Recuerda ingresar tu nombre y apellido!</div>';
  42.                 }
  43.                     else if(trim($telefono) == '')
  44.                 {
  45.                     $error = '<div class="errormsg">Debe ingresar su número de teléfono!</div>';
  46.                 }
  47.                    
  48.                     else if(trim($email) == '')
  49.                 {
  50.                     $error = '<div class="errormsg">Debes ingresar tu dirección de email!</div>';
  51.                 }
  52.                     else if(!isEmail($email))
  53.                 {
  54.                     $error = '<div class="errormsg">La dirección de e-mail no es valida, ingrésala nuevamente!</div>';
  55.                 }
  56.                     else if(trim($subject) == '')
  57.                 {
  58.                     $error = '<div class="errormsg">Debes ingresar el asunto!</div>';
  59.                 }
  60.                  
  61.                     else if(trim($message) == '')
  62.                 {
  63.                     $error = '<div class="errormsg">Debes ingresar tu mensaje!</div>';
  64.                 }
  65.                     else if(trim($spamcheck) == '')
  66.                 {
  67.                     $error = '<div class="errormsg">Debes ingresar el número Anti Spam!</div>';
  68.                 }
  69.                     else if(trim($spamcheck) != '5')
  70.                 {
  71.                     $error = '<div class="errormsg">Spam: El número ingresado no es correcto!  2 + 3 = ???</div>';
  72.                 }
  73.                 if($error == '')
  74.                 {
  75.                     if(get_magic_quotes_gpc())
  76.                     {
  77.                         $message = stripslashes($message);
  78.                     }
  79.  
  80.                     // el correo electrónico se enviará aquí
  81.                     $to      = "[email protected]";
  82.  
  83.                     // the email subject
  84.                     // '[Contact Form] :' will appear automatically in the subject.
  85.                     // You can change it as you want
  86.  
  87.                     $subject = '[Formulario Contacto] : ' . $subject;
  88.  
  89.                     // the mail message ( add any additional information if you want )
  90.                     $msg     = "From : $name \r\ne-Mail : $email \r\nSubject : $telefono \r\ntelefono : $subject \r\n\n"  . "message : \r\n$message";
  91.  
  92.                     mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
  93.             ?>
  94. <div class="mensaje">
  95.                     <h1>Felicitaciones!!</h1>
  96.                        <p><span class="respuesta">Gracias</span> <b class="text-form"><?=$name;?></b><span class="respuesta">, tu mensaje se envío exitosamente!</span></p>
  97.                   </div>
  98.                   <!--End Message Sent-->
  99.  
  100.                   <?php
  101.                 }
  102.             }
  103.  
  104.             if(!isset($_POST['send']) || $error != '')
  105.             {
  106.             ?>

esto es la parte del formulario en el mismo archivo

Código HTML:
Ver original
  1. <p class="title-formulario">Formulario de Consulta y Contacto:</p>
  2.             <!--Error Message-->
  3.             <?=$error;?><form role="form" method="post" name="contFrm" id="feedbackForm" action="">
  4. <div class="form-group">
  5.     <label class="text-form"><span class="required">*</span> Nombre</label>
  6.     <div class="input-group">
  7.         <input type="text" name="name" class="form-control" id="name"  placeholder="Introduzca su Nombre" value="<?=$name;?>"/>
  8.         <span class="input-group-addon"><i class="glyphicon glyphicon-unchecked form-control-feedback"></i></span>
  9.     </div>
  10. </div>
  11. <div class="form-group">
  12.     <label class="text-form"><span class="required">*</span> Teléfono</label>
  13.     <div class="input-group">
  14.         <input type="text" name="telefono" class="form-control" id="telefono"  placeholder="Introduzca su Número" value="<?=$telefono;?>"/>
  15.         <span class="input-group-addon"><i class="glyphicon glyphicon-unchecked form-control-feedback"></i></span>
  16.     </div>
  17. </div>
  18. <div class="form-group">
  19.     <label class="text-form"><span class="required">*</span> Email</label>
  20.     <div class="input-group">
  21.         <input type="text" name="email" class="form-control" id="email"  placeholder="Introduzca su Correo" value="<?=$email;?>"/>
  22.         <span class="input-group-addon"><i class="glyphicon glyphicon-unchecked form-control-feedback"></i></span>
  23.     </div>
  24. </div>
  25. <div class="form-group">
  26.     <label class="text-form"><span class="required">*</span> Asunto</label>
  27.     <div class="input-group">
  28.         <input type="text" name="subject" class="form-control" id="subject"  placeholder="Introduzca el Asunto" value="<?=$subject;?>"/>
  29.         <span class="input-group-addon"><i class="glyphicon glyphicon-unchecked form-control-feedback"></i></span>
  30.     </div>
  31. </div>
  32. <div class="form-group">
  33.     <label class="text-form"><span class="required">*</span> Mensaje</label>
  34.     <div class="input-group">
  35.         <textarea rows="5" cols="30" class="form-control" id="message" name="message" placeholder="Introduzca su Mensaje"><?=$message;?></textarea>
  36.         <span class="input-group-addon"><i class="glyphicon glyphicon-unchecked form-control-feedback"></i></span>
  37.     </div>
  38. </div>
  39. <div class="form-group">
  40.     <label class="text-form"><span class="required">*</span> Anti Spam: <b class="suma"> 2 + 3=</b></label>
  41.     <div class="input-group">
  42.         <input type="text" name="spamcheck" class="form-control" id="spamcheck" placeholder="Resultado?" value="<?=$spamcheck;?>"/>
  43.     </div>
  44. </div>
  45. <!-- Submit Button-->
  46. <div class="enviar">
  47.     <input name="send" type="submit" class="btn btn-primary btn-md" id="send" value="Enviar Mensaje"/>
  48. </div>
  49. </form>

Código PHP:
Ver original
  1. <?php
  2.             }
  3.  
  4.             function isEmail($email)
  5.             {
  6.                 return(preg_match("/^[-_.[:alnum:]][email protected]((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
  7.                         ,$email));
  8.             }
  9.             ?>

Saben si falta algo, o que puede estar malo como para que los email no se envien? aparte el código me indica en su mensaje que este ha sido enviado de forma exitosa, pero eso no significa que sea cierto, ya que no pasa nada, ni a la bandeja de spam llega... Gracias por su atención, espero me puedan ayudar. Saludos
  #2 (permalink)  
Antiguo 14/06/2017, 10:10
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 12 años, 4 meses
Puntos: 23
Respuesta: parece que envia pero no llega (formulario php)

Qué tal?!

1.- Y si cambiaste los correos electrónicos de [email protected] por alguno verdadero? Linea 12 y 81.

En todo caso no puedes mandar un mail al mismo que lo envía, pues sería considerado como spam.

2.- De forma local; si no esta configurado no enviara correo a menos que este en el servidor de internet.

Los mail se guardan, en mi caso, en el directorio xampp\mailoutput de forma local si es que el script esta bien.
__________________
Un buen programa depende de la imaginación.
  #3 (permalink)  
Antiguo 14/06/2017, 13:38
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: parece que envia pero no llega (formulario php)

Hola Turdo..

contestando tus preguntas..

1.- si cambie la dirección de correo por uno verdadero que tengo configurado en mi servicio de hosting... le puse [email protected] para mostrarlo acá y ocultar el verdadero no más

2.- no lo estoy probando de forma local, estoy directamente del hosting, entro a mi página, como cualquier cybernauta, me voy al formulario de contacto que ya esta en linea y me hago pasar como cualquier persona que desea ponerse en contacto, luego de enviar, me indica el mensaje que el correo a sido enviado con éxito, pero cuando reviso el correo del sitio web no hay nada, ni en spam.

PD: no sabia que se podían probar los e-mail de forma local.!! "buen dato a investigar"

Gracias Turdo, a ver si me echas una mano...
  #4 (permalink)  
Antiguo 14/06/2017, 13:41
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 15 años, 9 meses
Puntos: 67
Respuesta: parece que envia pero no llega (formulario php)

Según veo en el action del form no tienes a donde enviar los datos.

Si le agregas
Código PHP:
Ver original
  1. action="<?php echo $_SERVER['PHP_SELF'];?>
Ya que al estar en el mismo formulario se mandaría a si mismo.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #5 (permalink)  
Antiguo 14/06/2017, 16:48
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: parece que envia pero no llega (formulario php)

Hola bookmaster

Probe como dices, pero aún no pasa nada... ahora tendra que ver con la función mail? lei algo sobre lo que dice el manual de php pero no veo que este mal..
  #6 (permalink)  
Antiguo 14/06/2017, 22:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.741
Antigüedad: 9 años, 4 meses
Puntos: 2113
Respuesta: parece que envia pero no llega (formulario php)

Usa PHPMailer, suele ser efectivo para crear los encabezados de forma que la mayoría de servicios de correo reciban sin problemas.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 15/06/2017, 11:19
 
Fecha de Ingreso: agosto-2013
Ubicación: Granada, Andalucía, España
Mensajes: 34
Antigüedad: 4 años, 3 meses
Puntos: 0
Respuesta: parece que envia pero no llega (formulario php)

Yo he conseguido gestionar correctamente correos desde mi pagina web despues de varios problemillas; el principal: que la cuenta de origen debe existir, al menos el dominio.

La mayor difernecia que veo con el código que has puesto está en las cabeceras que hay que enviar. Mi código es éste, y funciona sin problemas:

Código PHP:
Ver original
  1. $cabeceras  = "MIME-Version: 1.0 \r\n Content-type: text/html; charset=UTF-8 \r\n";
  2. // Cabeceras adicionales
  3.     $cabeceras .= "To: $alias <$correo> \r\n";
  4.     $cabeceras .= "From: $desde <[email protected]> \r\n";
  5.     $mensaje = $texto;
  6.     $mensaje.= "<p>".$diccionario["cordialsaludo"]."</p>";
  7.     $mensaje.= $diccionario["correodesatendido"];
  8. //Enviar correo y verificar que se ha enviado antes de actualizar base  de datos
  9. //Si no se envía, $Status a 97 y mostrar un mensaje de error
  10.     if (mail ($correo, $asunto, $mensaje, $cabeceras))
  11.        {$Status= 98;}
  12.     else
  13.        {$Status= 97;}

xxxxx.com debe ser un domnio real.
  #8 (permalink)  
Antiguo 15/06/2017, 12:31
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: parece que envia pero no llega (formulario php)

Hola Triby sino encuentro el problema de este código pasare con la opción de informarme sobre PHPMailer. Realmente me intereza conocer que es lo que falla de sto para aprender más aún.. Muchas gracias por el dato.
  #9 (permalink)  
Antiguo 16/06/2017, 12:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.741
Antigüedad: 9 años, 4 meses
Puntos: 2113
Respuesta: parece que envia pero no llega (formulario php)

marciano_79, el error normalmente deriva de encabezados mal formados o incompletos; puedes revisar cómo los hace PHPMailer y adaptarlos a tu script, normalmente es lo que yo hago.
__________________
- León, Guanajuato
- GV-Foto



La zona horaria es GMT -6. Ahora son las 15:41.