Foros del Web » Programando para Internet » Jquery »

Problema Envío de Email

Estas en el tema de Problema Envío de Email en el foro de Jquery en Foros del Web. Hola muchachos de Foros del Web, espero se encuentren muy bien. Paso a contarles mi situación. Estoy realizando un formulario de contáctanos. Las validaciones de ...
  #1 (permalink)  
Antiguo 27/10/2014, 07:44
 
Fecha de Ingreso: diciembre-2009
Mensajes: 82
Antigüedad: 15 años
Puntos: 0
Problema Envío de Email

Hola muchachos de Foros del Web, espero se encuentren muy bien. Paso a contarles mi situación. Estoy realizando un formulario de contáctanos. Las validaciones de cada uno de los campos están en jQuery y el envío del email está en php. El problema que tengo es que al momento de que el email llega a mi bandeja de correo, de los 4 campos que tengo (Nombre, Email, Teléfono, Mensaje) sólo me llega el email :( Los otros campos aparecen vacíos.

A continuación adjunto el código:
Formulario:
Código HTML:
<form class="form-inline" role="form" action="envio.php" method="post" id='contactus' name='contactus'>
                <div id="alerta" style=" color: red;"></div>
                 <div class="form-group">
                      <label class="sr-only" for="exampleInputEmail2">Nombre</label>
                       <input type="text" name="name" class="form-control" id="name" placeholder="Nombre:">
                  </div>
                  <div class="form-group">
                       <label class="sr-only" for="exampleInputPassword2">Email</label>
                        <input type="text" name="email" class="form-control" id="email" placeholder="Email:" >
                   </div>
                   <div class="form-group">
                        <label class="sr-only" for="exampleInputPassword2">Tel&eacute;fono</label>
                         <input type="text" name="phone" class="form-control" id="phone" placeholder="Tel&eacute;fono:" >
                    </div>
                    <textarea class="form-control" id="message" name="message" cols="40" rows="10" placeholder="Mensaje:" ></textarea>
                     <br />
                     <p class="botones" id="btncontacto"><input type="reset" value="Limpiar" class="btn btn-primary">&nbsp;<input type="submit" value="Enviar" class="btn btn-primary"></p>
</form> 
Script:
Código:
<script type='text/javascript' src='js/jquery-1.8.3.min.js'></script>
        <script type='text/javascript' src='js/jquery-validation-1.13.1/dist/jquery.validate.js'></script>
        <script type="text/javascript">
        <!--
        $(document).ready(function(){
            $("#contactus").validate({
                errorElement: "div",
                errorPlacement: function(error, element) {
                    error.appendTo("div#alerta");
                }, 
                
                rules: {
                    name: {
                        required: true
                    },
                    email: {
                        required: true,
                        email: true
                    },

                    phone: {
                        required: true,
                        number: true
                    },

                    message: {
                        required: true,
                    }
                },

                messages: {
                    name: {
                        required: 'Debes ingresar tu nombre'
                    },
                    email: {
                        required: 'Debes ingresar tu direccion de correo electronico', email: 'El formato de email es incorrecto'
                    },

                    phone: {
                        required: 'Debes ingresar tu telefono', number: 'Solo se aceptan digitos'
                    },

                    message: {
                        required: 'Debes ingresar un mensaje'
                    }
      
                },

                debug: true,errorElement: "label",
                submitHandler: function(form){
                    $("#alerta").html("<strong>Enviando mensaje...</strong>");
                    $.ajax({
                        type: "POST",
                        url:"envio.php",
                        contentType: "application/x-www-form-urlencoded",
                        processData: true,
                        data: "nombre="+escape($('#name').val())+"&email="+escape($('#email').val())+"&telefono="+escape($('#phone').val())+"&mensaje="+escape($('#message').val()),
                        success: function(msg){
                            $("#alerta").html("<strong>Mensaje enviado correctamente. En breve recibir&aacute;s mi respuesta. Gracias!</strong>");
                            document.getElementById("name").value="";
                            document.getElementById("email").value="";
                            document.getElementById("phone").value="";
                            document.getElementById("message").value="";
                            setTimeout(function() {$('#alerta').fadeOut('fast');}, 3000);

                        }
                    });
                }
            });
        });
            // -->
        </script>
Envío de email:
Código PHP:
<?php
$remitente 
$_POST['email'];
$destinatario '[email protected]';
$asunto 'Consulta'
if (!
$_POST){
?>

<?php
}else{
     
    
$cuerpo "Nombre: " $_POST["name"] . "\r \n"
    
$cuerpo .= "Email: " $_POST["email"] . "\r \n";
    
$cuerpo .= "Telefono: " $_POST["phone"] . "\r\n";
    
$cuerpo .= "Mensaje: " $_POST["message"] . "\r\n";

    
$headers  "MIME-Version: 1.0\n";
    
$headers .= "Content-type: text/plain; charset=utf-8\n";
    
$headers .= "X-Priority: 3\n";
    
$headers .= "X-MSMail-Priority: Normal\n";
    
$headers .= "X-Mailer: php\n";
    
$headers .= "From: \"".$_POST['name']."\" <".$remitente.">\n";

    
mail($destinatario$asunto$cuerpo$headers);

}
?>
¿Qué podrá estar pasando? Espero su ayuda. Saludos.
  #2 (permalink)  
Antiguo 27/10/2014, 11:37
(Desactivado)
 
Fecha de Ingreso: abril-2013
Ubicación: rosario
Mensajes: 248
Antigüedad: 11 años, 7 meses
Puntos: 17
Respuesta: Problema Envío de Email

Por lo que veo estas concatenando mal los parametros, es decir vos haces esto
Código:
data: "nombre="+escape($('#name').val())+"&email="+escape($('#email').val())+"&telefono="+escape($('#phone').val())+"&mensaje="+escape($('#message').val()),
pero los parametros estimo que deben ser separados por coma, ej
Código:
data: "nombre="+escape($('#name').val())+",email="+escape($('#email').val())+",telefono="+escape($('#phone').val())+",mensaje="+escape($('#message').val()),
probalo y me contas
  #3 (permalink)  
Antiguo 27/10/2014, 11:43
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 10 años, 5 meses
Puntos: 44
Respuesta: Problema Envío de Email

Lo más fácil para enviar la data de un formulario con jQuery es usando serialize(). Resumís todo el código en una sola función y te vas a ahorrar problemas de concatenación y demás.

En la línea donde definís la data, simplemente usá:

Código jQuery:
Ver original
  1. data: $('#contactus').serialize(),

Saludos :)
  #4 (permalink)  
Antiguo 28/10/2014, 14:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 82
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema Envío de Email

Hola diurno10, probé separando por "comas" pero no funciona :(
  #5 (permalink)  
Antiguo 28/10/2014, 14:52
(Desactivado)
 
Fecha de Ingreso: abril-2013
Ubicación: rosario
Mensajes: 248
Antigüedad: 11 años, 7 meses
Puntos: 17
Respuesta: Problema Envío de Email

proba asi con todos los demas parametros
[JSFIDDLE="data: { nombre: escape($('#name').val()), email: escape($('#email').val()) },"][/JSFIDDLE]
  #6 (permalink)  
Antiguo 28/10/2014, 15:28
 
Fecha de Ingreso: diciembre-2009
Mensajes: 82
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema Envío de Email

Probé con serialize() y si funcionó :) Muchas gracias GeekGirl por tu ayuda.

Etiquetas: email
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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