entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

formulario de contacto plantilla

Buenos días

He terminado una página http://pruebagonzalo.org.es/julio/ usando una plantilla
Estoy atascado con el formulario de contacto ya que al intentar enviar el mensaje me sale el siguiente mensaje de error :
"Sorry , it seems thay my mail server is not responding ... Could you please email directly " . No llega al actión del form.

Aquí pongo el código del formulario


        <form action="formu.php" method="post" name="sentMessage" id="contactForm" novalidate>
                  <div class="col-md-6 w3l_area_its">
                    <div class="control-group form-group">
                        <div class="controls">
                            <label class="contact-p1">Nombre:</label>
                            <input type="text" class="form-control" name="nombre" id="name" required data-validation-required-message="Please enter your name.">
                            <p class="help-block"></p>
                        </div>
                    </div>  
                    <div class="control-group form-group">
                        <div class="controls">
                            <label class="contact-p1">Teléfono:</label>
                            <input type="tel" class="form-control" name="telefono" id="phone" required data-validation-required-message="Please enter your phone number.">
                            <p class="help-block"></p>
                        </div>
                    </div>
                    </div>
                     <div class="col-md-6 w3l_area">
                    <div class="control-group form-group">
                        <div class="controls">
                            <label class="contact-p1">Email :</label>
                            <input type="email" class="form-control" name="email" id="email" required data-validation-required-message="Please enter your email address.">
                            <p class="help-block"></p>
                        </div>
                    </div>
                    <div id="success"></div>
                    <!-- For success/fail messages -->
                    <button type="submit" class="btn btn-primary">Enviar</button>
                    </div>  
<div class="clearfix"> </div>                   
                </form> 

El código del php es

<?php

         $cabecera ="From: TuBondour \r\n"; 
         $sendTo = "[email protected]"; 
         $subject = "formulario"; 
         $nombre = $_POST["nombre"]; 
         $telefono = $_POST["telefono"]; 
         $email = $_POST["email"];  

         $message = "\nNombre:" . $nombre . "\ntelefono:" . $curso .  "\nemail:" . $email ; 

        mail($sendTo, $subject, $message, $cabecera);

        header ("Location: index.html");  

      ?>

Alguien se ha encontrado con este mensaje alguna vez

Muchas gracias

1voto

gonzalss comentado

Si claro, se llama contact-me.js

/*
  Jquery Validation using jqBootstrapValidation
   example is taken from jqBootstrapValidation docs 
  */
$(function() {

    $("input,textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // something to have when submit produces an error ?
            // Not decided if I need it yet
        },
        submitSuccess: function($form, event) {
            event.preventDefault(); // prevent default submit behaviour
            // get values from FORM
            var name = $("input#name").val();
            var phone = $("input#phone").val();
            var email = $("input#email").val();
            var message = $("textarea#message").val();
            var firstName = name; // For Success/Failure Message
            // Check for white space in name for Success/Fail message
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }
            $.ajax({
                url: "#",
                type: "POST",
                data: {
                    name: name,
                    phone: phone,
                    email: email,
                    message: message
                },
                cache: false,
                success: function() {
                    // Success message
                    $('#success').html("<div class='alert alert-success'>");
                    $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                        .append("</button>");
                    $('#success > .alert-success')
                        .append("<strong>Your message has been sent. </strong>");
                    $('#success > .alert-success')
                        .append('</div>');

                    //clear all fields
                    $('#contactForm').trigger("reset");
                },
                error: function() {
                    // Fail message
                    $('#success').html("<div class='alert alert-danger'>");
                    $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                        .append("</button>");
                    $('#success > .alert-danger').append("<strong>Sorry " + firstName + " it seems that my mail server is not responding...</strong> Could you please email me directly to <a href='mailto:[email protected]?Subject=Message_Me from myprogrammingblog.com;>[email protected]</a> ? Sorry for the inconvenience!");
                    $('#success > .alert-danger').append('</div>');
                    //clear all fields
                    $('#contactForm').trigger("reset");
                },
            })
        },
        filter: function() {
            return $(this).is(":visible");
        },
    });

    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});

/*When clicking on Full hide fail/success boxes */
$('#name').focus(function() {
    $('#success').html('');
});

2votos

lfmd comentado

en la parte donde dice URL:

$.ajax({
                url: "#",
                type: "POST",

no deberías poner el formu.php

2votos

FelipeMedel comentado

como dice @lfmd ese puede ser el problema, en el formulario le estas diciendo que vaya hacia un lugar, pero estas manejando una función que se encarga de recibir los datos y enviarlos, pero no estas colocando en la url hacia donde quieres enviarlos.

url: "formu.php"

puede ser la solución, prueba este cambio y nos comentas que resultado te dio.

1voto

gonzalss comentado

Estáis en lo correcto . Esa era la función que controlaba el formulario. He puesto en la url el nombre del archivo y ahora llegan correctamente los correos enviados por el formulario.
Muchas gracias chicos .
Siempre se aprende algo

1voto

FelipeMedel comentado

lo importante es eso, que lograste solucionar el inconveniente y aprender!! suerte

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @gonzalss,

vamos por partes:

  • el script que envía el mail es formu.php

  • para enviar un mail con la función mail() de PHP en local, tenés que tener configurado un servidor de correo en tu propia PC y tener configurado PHP para que lo use: por eso obtenés el mensaje de que el servidor no responde.

  • para hacer lo mismo en un servidor web, en dónde sí habrá funcionando un servidor de correo, tenés que ver si el proveedor no tiene alguna restricción de envío... Además, la funcion mail() no tiene como especificar el remitente, ya que el que envía el mensaje es el usuario que ejecuta el script. Si este usaurio es el propio servidor web, posiblemente los servidores de destino lo rechacen.
    Probá enviando un mail a una cuenta del propio dominio el hosting, que en general tienen menos restricciones.

  • por último y no menos importante: el código JavaScript que estás usando, captura los eventos submit y envía los formularios con AJAX, es decir, los datos llegan a formu.php, pero al no tener este una respuesta JSON que acepte la página, parece que no funciona.

Estas son las 3 cosas que te está pasando, y todas tiene arreglos que ameritan una pregunta nueva para cada una, porque son más o menos largas...

Saludos cordiales!

1voto

gonzalss comentado

Muchas gracias Leonardo.

Si el problema lo tengo localizado, no se como solucionarlo pero lo tengo localizado. No llega al formu.php. Aunque trabajara el local, si llegara al php me mostraría el código fuente del php (aunque no enviara el correo). Desconozco porque no lleva, ya que he puesto correctamente el evento

<button type="submit" class="btn btn-primary">Enviar</button>

¿ Cuál sería el siguiente paso ?

1voto

Leonardo-Tadei comentado

Hola @gonzalss,

no llega a formu.php por lo que te indico en el último punto de mi respuesta: hay un JavaScript capturando el evento submit() y enviándolo por AJAX.

Por eso no vas a ver la ejecución de formu.php ni el código fuente PHP ni nada de la salida, ya que en caso de ir todo bien, se ejecutará lo que haya en el método success() de $.ajax() de JQuery (que es lo que estás mostrando que se usa para enviar).

Sí definís que el URL de $.ajax() apunte a formu.php, conseguirás que se invoque a tu script PHP para procesar los datos!!!

Saludos cordiales

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta