Foros del Web » Programando para Internet » PHP »

Campo e-mail no se envía

Estas en el tema de Campo e-mail no se envía en el foro de PHP en Foros del Web. Hola a todos, soy nuevo aquí, me llamo Sergio y soy diseñador gráfico. ... Bueno, a lo que iba, me ha tocado en el trabajo ...
  #1 (permalink)  
Antiguo 07/01/2015, 12:02
 
Fecha de Ingreso: enero-2015
Mensajes: 25
Antigüedad: 9 años, 3 meses
Puntos: 0
Campo e-mail no se envía

Hola a todos, soy nuevo aquí, me llamo Sergio y soy diseñador gráfico.
...
Bueno, a lo que iba, me ha tocado en el trabajo terminar una web y me queda tan solo el formulario, q no s xq xo s envían todos los campos menos el del mail.

No tengo ni idea donde puede estar el fallo. El código HTML es este:

Código HTML:
 <label>
                    <p>(*)Nombre:</p>
                    <input name="nombre" id="c_name" type="text" class="c_input" placeholder="nombre..."/>
                    </label>
                    <br/>
                    <label>
                    <p>(*)Email:</p>
                    <input name="mail"  id="c_mail" type="text" class="c_input" placeholder="email..."/>
                   </label>
                </div>
                <label>
                  <p>(*)Mensaje:</p>
                  <textarea name="mensaje"  id="c_msg" placeholder="mensaje..."></textarea>
                </label> 
Y el PHP es este:

Código PHP:
<?php
$nombre 
$_POST['nombre'];
$mail $_POST['mail'];
$mensaje $_POST['mensaje'];

$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "Este mensaje fue enviado por " $nombre ", \r\n";
$mensaje .= "Su e-mail es: " $mail " \r\n";
$mensaje .= "Mensaje: " $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());

$para 'E-MAIL';
$asunto 'Asunto del e-mail recibido. Gracias';

mail($para$asuntoutf8_decode($mensaje), $header);

echo 
'Mensaje enviado correctamente';
?>
Falta un código JS pero no creo que tenga q ver, es para saber si t has dejado algún campo sin rellenar.

He probado varias forma de hacerlo pero siempre me llega el campo mail vacío.

Alguien sabe la forma de solucionarlo?? gracias
  #2 (permalink)  
Antiguo 07/01/2015, 12:15
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Campo e-mail no se envía

Hola ponyboy, podrías publicar el código del formulario completo.

por otra parte en el archivo php prueba haciendo un

Código PHP:
Ver original
  1. print_r($_POST); exit;

para validar que todos los campos se estan enviando correctamente.

Espero te sirva.

Saludos.
__________________
http://www.sp-vision.net
  #3 (permalink)  
Antiguo 07/01/2015, 12:45
 
Fecha de Ingreso: enero-2015
Mensajes: 25
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Campo e-mail no se envía

Hola, he probado el código que me has pasado y me sale esto:

Código PHP:
Mensaje enviado correctamenteArray ( [nombre] => sads [email] => sdasds@terra.es [mensaje] => sadsdasas 
Por lo que creo que se envía bien pero me llega el campo mail vacío.

Escribo el código html del formulario completo:

Código HTML:
<div id="contactform">
            <!-- bloque confirmacion de envio oculto  -->
            <div id="c_information" class="hide">
                <p></p>
            </div>
            <!-- fin bloque confirmacion de envio -->
             
            <!-- inicio formulario -->
            <form id="c_form" name="contact">
                <div>
                  <label>
                    <p>(*)Nombre:</p>
                    <input name="nombre" id="c_name" type="text" class="c_input" placeholder="nombre..."/>
                  </label>
                  <br/>
                  <label>
                    <p>(*)Email:</p>
                    <input name="mail"  id="c_mail" type="text" class="c_input" placeholder="email..."/>
                  </label>
                </div>
                <label>
                  <p>(*)Mensaje:</p>
                  <textarea name="mensaje"  id="c_msg" placeholder="mensaje..."></textarea>
                </label>
               
     
                  <!-- checkbox  -->
                 <label>
                <input type="checkbox" value="1" id="accept_conditions" name="accept_conditions" class="required-entry">
	  			<label for="accept_conditions" class="required-label">He leído y acepto las 
	  				<a class="linkpopup" data-reveal-id="conditions" data-animation="fade" href="#">Aviso legal</a></label>
	  				<div id="conditions" class="reveal-modal">
	  					<h1 style="padding-left: 45px;">Aviso legal</h1>
						<div class="content-modal"><div class="cms-content">
<p>
AQUÍ VA TODO EL TEXTO DEL AVISO LEGAL

</p>
    

</label>
    
</div>
</div>
</div>            
                <!-- boton enviar  -->
                <div id="c_btns">
                    <input name="send" onclick="cargaSendMail()" type="button" value="Enviar" class="btn-b" id="c_enviar"></input>
                    <p>(*) Required fields </p>
                </div>
            </form>
            <!-- fin formulario --> 
Escribo también el JS, aunque creo q no tiene nada q ver:

Código:
function cargaSendMail(){
 
 
    $("#c_enviar").attr("disabled", true);
 
    $(".c_error").remove();
 
    var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+.[A-Za-z0-9_.]+[A-za-z]$/;
    var s_email = $('#c_mail').val();
    var s_name = $('#c_name').val();    
    var s_msg = $('#c_msg').val();
 
    if (filter.test(s_email)){
    sendMail = "true";
    } else{
    $('#c_mail').after("<span class='c_error' id='c_error_mail'>(*)</span>");
     //aplicamos color de borde si el se encontro algun error en el envio
    $('#contactform').css("border-color","#e74c3c");   
    sendMail = "false";
    }
    if (s_name.length == 0 ){
    $('#c_name').after( "<span class='c_error' id='c_error_name'>(*)</span>" );
    var sendMail = "false";
    }
    if (s_msg.length == 0 ){
    $('#c_msg').after( "<span class='c_error' id='c_error_msg'>(*)</span>" );
    var sendMail = "false";
    }
 
    
    if(sendMail == "true"){
     
     var datos = {
 
             "nombre" : $('#c_name').val(),
 
             "email" : $('#c_mail').val(),
 
             "mensaje" : $('#c_msg').val()
 
     };
 
     $.ajax({
 
             data:  datos,
             // hacemos referencia al archivo contacto.php
             url:   'contacto.php',
 
             type:  'post',
 
             beforeSend: function () {
             //aplicamos color de borde si el envio es exitoso
                    $('#contactform').css("border-color","#25A25A");
 
                     $("#c_enviar").val("Enviando...");
 
             },
 
             success:  function (response) {
 
                    $('form')[0].reset(); 
                    $("#c_enviar").val("Enviar");
                    $("#c_information p").html(response);
                    $("#c_information").fadeIn('slow');
                    $("#c_enviar").removeAttr("disabled");
                     
 
 
             }
 
     });
 
} else{
    $("#c_enviar").removeAttr("disabled");
}
 
}
  #4 (permalink)  
Antiguo 07/01/2015, 13:27
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Campo e-mail no se envía

Por lo que se ve a simple vista es que los datos se están enviando por ajax al php.

Esto seria si se envia todo por php
$mail = $_POST['mail']; // Aca se esta recuperando mail y no email que el que envia ajax.

El código de ajax lo esta enviando así.

"nombre" : $('#c_name').val(),

"email" : $('#c_mail').val(), // Aca se llama email

"mensaje" : $('#c_msg').val()


En el archivo php tendrías que recuperarlo así

$mail = $_POST['email'];

Cita:
Iniciado por ponyboy Ver Mensaje
Hola, he probado el código que me has pasado y me sale esto:

Código PHP:
Mensaje enviado correctamenteArray ( [nombre] => sads [email] => sdasds@terra.es [mensaje] => sadsdasas 
Por lo que creo que se envía bien pero me llega el campo mail vacío.

Escribo el código html del formulario completo:

Código HTML:
<div id="contactform">
            <!-- bloque confirmacion de envio oculto  -->
            <div id="c_information" class="hide">
                <p></p>
            </div>
            <!-- fin bloque confirmacion de envio -->
             
            <!-- inicio formulario -->
            <form id="c_form" name="contact">
                <div>
                  <label>
                    <p>(*)Nombre:</p>
                    <input name="nombre" id="c_name" type="text" class="c_input" placeholder="nombre..."/>
                  </label>
                  <br/>
                  <label>
                    <p>(*)Email:</p>
                    <input name="mail"  id="c_mail" type="text" class="c_input" placeholder="email..."/>
                  </label>
                </div>
                <label>
                  <p>(*)Mensaje:</p>
                  <textarea name="mensaje"  id="c_msg" placeholder="mensaje..."></textarea>
                </label>
               
     
                  <!-- checkbox  -->
                 <label>
                <input type="checkbox" value="1" id="accept_conditions" name="accept_conditions" class="required-entry">
	  			<label for="accept_conditions" class="required-label">He leído y acepto las 
	  				<a class="linkpopup" data-reveal-id="conditions" data-animation="fade" href="#">Aviso legal</a></label>
	  				<div id="conditions" class="reveal-modal">
	  					<h1 style="padding-left: 45px;">Aviso legal</h1>
						<div class="content-modal"><div class="cms-content">
<p>
AQUÍ VA TODO EL TEXTO DEL AVISO LEGAL

</p>
    

</label>
    
</div>
</div>
</div>            
                <!-- boton enviar  -->
                <div id="c_btns">
                    <input name="send" onclick="cargaSendMail()" type="button" value="Enviar" class="btn-b" id="c_enviar"></input>
                    <p>(*) Required fields </p>
                </div>
            </form>
            <!-- fin formulario --> 
Escribo también el JS, aunque creo q no tiene nada q ver:

Código:
function cargaSendMail(){
 
 
    $("#c_enviar").attr("disabled", true);
 
    $(".c_error").remove();
 
    var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+.[A-Za-z0-9_.]+[A-za-z]$/;
    var s_email = $('#c_mail').val();
    var s_name = $('#c_name').val();    
    var s_msg = $('#c_msg').val();
 
    if (filter.test(s_email)){
    sendMail = "true";
    } else{
    $('#c_mail').after("<span class='c_error' id='c_error_mail'>(*)</span>");
     //aplicamos color de borde si el se encontro algun error en el envio
    $('#contactform').css("border-color","#e74c3c");   
    sendMail = "false";
    }
    if (s_name.length == 0 ){
    $('#c_name').after( "<span class='c_error' id='c_error_name'>(*)</span>" );
    var sendMail = "false";
    }
    if (s_msg.length == 0 ){
    $('#c_msg').after( "<span class='c_error' id='c_error_msg'>(*)</span>" );
    var sendMail = "false";
    }
 
    
    if(sendMail == "true"){
     
     var datos = {
 
             "nombre" : $('#c_name').val(),
 
             "email" : $('#c_mail').val(),
 
             "mensaje" : $('#c_msg').val()
 
     };
 
     $.ajax({
 
             data:  datos,
             // hacemos referencia al archivo contacto.php
             url:   'contacto.php',
 
             type:  'post',
 
             beforeSend: function () {
             //aplicamos color de borde si el envio es exitoso
                    $('#contactform').css("border-color","#25A25A");
 
                     $("#c_enviar").val("Enviando...");
 
             },
 
             success:  function (response) {
 
                    $('form')[0].reset(); 
                    $("#c_enviar").val("Enviar");
                    $("#c_information p").html(response);
                    $("#c_information").fadeIn('slow');
                    $("#c_enviar").removeAttr("disabled");
                     
 
 
             }
 
     });
 
} else{
    $("#c_enviar").removeAttr("disabled");
}
 
}
__________________
http://www.sp-vision.net

Etiquetas: campo, e-mail, formulario, html
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 13:48.