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

0voto

FelipeMedel comentado

tómalo como un consejo para que tengas una mejor practica al momento de preguntar, en casos como estos, seria bueno ver un poco del código que estas implementando para poder ver con claridad y lograr identificar el problema que tienes y ayudarte a encontrar la solución.

0voto

Leonardo-Tadei comentado

Hola @gonzalss,

el mensaje de error parece provenir de formu.php ... tendríamos que poder ver el código fuente de ese script para ayudarte a ver qué pasa...

0voto

FelipeMedel comentado

ahora que colocaste el código del html, y mirando el error que te manda, se puede decir que el error esta en el archivo formu.php, este archivo fue creado por ti o también venia con la plantilla???

0voto

gonzalss comentado

Yo creo que el error no me lo da el archivo formu.php.

He visto en un foro que alguien pone esto

Hi,

Your issue is actually expected, as github pages only serves static content

ie. mail/contact_me.php doesn't work when hosted on github pages. It is
not too hard to fix however:
First, you will need to sign up for a mail sending service like SendGrid or
Mandrill, which allows you to send email via a Javascript API.

Then, you can modify the ajax request in the 'submitSuccess' method
(line20) in /js/contact_me.js - you will have to replace the url field with
the appropriate API endpoint, and pass the appropriate parameters according
to your mail service provider.

Those are the high-level instructions I will leave you with - if you have
any more questions about implementing it, just let me know. I may be able
to give you some more hands-on help if you are not that familiar with JS
and API's.

0voto

FelipeMedel comentado

eso quiere decir que el formu.php también es un archivo que viene con la plantilla, al ver tu comentario, me doy cuenta que no quieres ayuda como tal, y que ya encontraste una solución... suerte.

0voto

gonzalss comentado

Al reves .. estoy descolocado. No se que quiere decir.
El archivo php formu.php es el archivo que he creado yo .
Lo que veo es que la llamada el no llega al archivo, se queda entre medias .

0voto

FelipeMedel comentado

te pregunto, este mensaje de error :
"Sorry , it seems thay my mail server is not responding ... Could you please email directly " en que momento te sale y como se muestra o como lo visualizas, abri el link de la página pero no me muestra ese mensaje o en que parte lo puedo ver como tal??

0voto

gonzalss comentado

El mensaje que he puesto me aparece en local , tienes razón . En el servidor aparece mensaje enviado pero no llega ni siguiera al archivo formu.php.
He puesto las siguientes líneas en el php

error_reporting(E_ALL);
echo error_reporting(E_ALL);

Me dice "Your message has been sent " .Me da la sensación que no está llegando al php

He probado invocar directamente al php ```
http://pruebagonzalo.org.es/julio/formu.php?nombre=gonzalo&telefono=323232&email=dede@dede



y responde enviando el correo . Por lo que el error está en que desde el Form no llega al action 

0voto

FelipeMedel comentado

el estilo o lo que utilizas para darle forma al formulario, no tiene algún evento o function que se active al presionar el botón de enviar mensaje?? por otro lado hice una prueba de tus códigos, mi pregunta es que tiene la variable curso??

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

0voto

gonzalss comentado

Hola Felipe

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

Este es el evento ( submit) que tengo en el formulario .

1voto

lfmd comentado

bueno leyendo un poco lo que han escrito, creo que lo que @FelipeMedel intenta decirte, es que en tu código HTML debes tener un javascript que se activa con el botón del formulario y quizás este sea el que te esta dando ese inconveniente, podrías mostrar el código en donde esta escrito el mensaje de error que te sale al enviar el mensaje??

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