Foros del Web » Programando para Internet » PHP »

Error con envio de correo PHP

Estas en el tema de Error con envio de correo PHP en el foro de PHP en Foros del Web. Muy buenas: Tengo este codigo para enviar un correo a través de un formulario de una página web pero cuando se envía el formulario el ...
  #1 (permalink)  
Antiguo 22/01/2015, 19:05
 
Fecha de Ingreso: enero-2015
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Error con envio de correo PHP

Muy buenas:

Tengo este codigo para enviar un correo a través de un formulario de una página web pero cuando se envía el formulario el correo llega a su destino pero los campos salen en blanco (no sale lo que escribió la persona que redactó el formulario).

Este es el código php:

Código PHP:
<?php
    header
('Content-type: application/json');
    
$status = array(
        
'type'=>'success',
        
'message'=>'Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. '
    
);

    
$name = @trim(stripslashes($_POST['name'])); 
    
$email = @trim(stripslashes($_POST['email'])); 
    
$subject = @trim(stripslashes($_POST['subject'])); 
    
$message = @trim(stripslashes($_POST['message'])); 

    
$email_from $email;
    
$email_to '[email protected]';//replace with your email

    
$body 'Name: ' $name "\n\n" 'Email: ' $email "\n\n" 'Subject: ' $subject "\n\n" 'Message: ' $message;

    
$success = @mail($email_to$subject$body'From: <'.$email_from.'>');

    echo 
json_encode($status);
    die;
Y este es el código del formulario HTML:
Código HTML:
 <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">
                    <div class="col-sm-5 col-sm-offset-1">
                        <div class="form-group">
                            <label>Nombre *</label>
                            <input type="text" name="name" class="form-control" required="required">
                        </div>
                        <div class="form-group">
                            <label>Email *</label>
                            <input type="email" name="email" class="form-control" required="required">
                        </div>
                        <div class="form-group">
                            <label>Teléfono</label>
                            <input type="number" class="form-control">
                        </div>
                        <div class="form-group">
                            <label>Empresa</label>
                            <input type="text" class="form-control">
                        </div>                        
                    </div>
                    <div class="col-sm-5">
                        <div class="form-group">
                            <label>Asunto *</label>
                            <input type="text" name="subject" class="form-control" required="required">
                        </div>
                        <div class="form-group">
                            <label>Mensaje *</label>
                            <textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea>
                        </div>                        
                        <div class="form-group">
                            <button type="submit" name="submit" class="btn btn-primary btn-lg" required="required">Enviar</button>
                        </div>
                    </div>
                </form> 
Este es el resultado:


¿Que estoy haciendo mal?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 22/01/2015, 21:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con envio de correo PHP

Cita:
¿Que estoy haciendo mal?
¿Sabes depurar código?

Caray, tienes tantas @ en el código que eso oculta los posibles errores, y si no te enteras de los errores ¿cómo esperas saber qué anda mal?

Nadie va a adivinar sólo con leer tu código, usa tu sentido común y ponte a depurar tu código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/01/2015, 21:38
 
Fecha de Ingreso: enero-2015
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error con envio de correo PHP

Hola,

Gracias por contestar, la verdad que soy un poco nuevo en esto y el código arriba expuesto es de una plantilla. ¿Que quieres decir con depurar el código? ¿Existe alguna forma de hacer un enviar.php de cero que funcione con ese html?

Muchas gracias, un saludo,
  #4 (permalink)  
Antiguo 22/01/2015, 21:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con envio de correo PHP

Depurar consiste en ir inspeccionando cada procedimiento del código, imprimiendo valores tal vez, la idea es examinar paso a paso para ver lo que sucede.

Ahora, el código mínimo es ese, no más. Igual lo podrías consultar en el manual: http://php.net/mail

Pero bueno, si no depuras tu código nadie lo hará por ti para entender el problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 22/01/2015, 22:27
 
Fecha de Ingreso: enero-2015
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error con envio de correo PHP

He modificado el código de la siguiente forma:

Código PHP:
<?php
    header
('Content-type: application/json');
    
$status = array(
        
'type'=>'success',
        
'message'=>'Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. '
    
);
    
    
$name $_POST['name']; 
    
$email $_POST['email']; 
    
$subject $_POST['subject']; 
    
$message $_POST['message'];
    
$telefono $_POST['telefono'];
    
$empresa $_POST['empresa'];

    
$email_from $email;
    
$email_to '[email protected]';//replace with your email

    
$body 'Nombre: ' $name "\n\n" 'Email: ' $email "\n\n" 'Asunto: ' $subject "\n\n" 'Mensaje: ' $message "\n\n" 'Telefono: ' $telefono "\n\n" 'Empresa: ' $Empresa;

    
$success = @mail($email_to$subject$body'From: <'.$email_from.'>');

    echo 
json_encode($status);
    die;
?>
He probado 1000 cosas, cambiando variables, quitandolas, probando códigos nuevos, pero no me funciona nada. Sigue dandome la misma salida que la foto del primer post...
  #6 (permalink)  
Antiguo 22/01/2015, 22:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con envio de correo PHP

A ver, ¿cómo verificas que vengan datos en $_POST?

Que quites y muevas cosas no va a corregir el problema por arte de magia, se trata de entender primero y después pensar en una solución.

Pero no depuras nada bien, sólo mueves cosas al azar y no obtienes más información que "la misma salida", ¿y se ocurre un error y jamás te enteras?

Vamos, quita todas las @ y si puedes imprime el $body completo para que veas que lleva.

Abre la consola de desarrollo de tu navegador e inspecciona la petición del fomulario al servidor ¿vienen ahí los datos o no?

¿Será que la plantilla que envía el formulario lo hace empleando AJAX?

¿Y no tendrás que configurar algo ahí?

Adivinar es imposible.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 23/01/2015, 05:54
 
Fecha de Ingreso: enero-2015
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error con envio de correo PHP

La verdad que soy nuevo en esto y PHP me cuesta lo suyo...

He modificado esto en el código

Código PHP:
<?php
    header
('Content-type: application/json');
    
$status = array(
        
'type'=>'success',
        
'message'=>'Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. '
    
);
    
    
$name =  @trim(stripslashes($_POST['name'])); 
    
$email = @trim(stripslashes($_POST['email'])); 
    
$subject = @trim(stripslashes($_POST['subject'])); 
    
$message = @trim(stripslashes($_POST['message']));
    
$telefono = @trim(stripslashes($_POST['telefono']));
    
$empresa = @trim(stripslashes($_POST['empresa']));
    
     
var_dump($_POST); //ESTO ES LO QUE HE MODIFICADO
     
echo "<br/>"//ESTO ES LO QUE HE MODIFICADO
    
    
$email_from $email;
    
$email_to '[email protected]';//replace with your email

    
$body 'Nombre: ' $name "\n\n" 'Email: ' $email "\n\n" 'Asunto: ' $subject "\n\n" 'Mensaje: ' $message "\n\n" 'Telefono: ' $telefono "\n\n" 'Empresa: ' $Empresa;

    
$success = @mail($email_to$subject$body'From: <'.$email_from.'>');

    echo 
json_encode($status);
    die;
?>
Y esta es la salida que me da por pantalla...
Código:
array(0) {
}
<br/>{"type":"success","message":"Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. "}
  #8 (permalink)  
Antiguo 23/01/2015, 10:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con envio de correo PHP

Bien ahí, ahora es evidente que no se está recibiendo nada en dicho script, o al menos no por método POST.

Te sugiero explicar bien lo que haces, porque si bien, el código es válido tal vez lo estés ejecutando de otra manera a la que se espera.

Se qué eres nuevo y entiendo que te cuesta, pero también debes entender que es imposible adivinar cómo haces las cosas independientemente de si sabes o no lo que haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 23/01/2015, 10:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error con envio de correo PHP

Como mínimo, tal como te dice @paketetrueke, quita la arrobas ( @ ).
Estas se usan para esconder las salidas de error y warnings de ejecución, y cuando estás en desarrollo, las necesitas.
Código PHP:
 <?php
    header
('Content-type: application/json');
    
$status = array(
        
'type'=>'success',
        
'message'=>'Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. '
    
);
    
    
$name =  trim(stripslashes($_POST['name'])); 
    
$email trim(stripslashes($_POST['email'])); 
    
$subject trim(stripslashes($_POST['subject'])); 
    
$message trim(stripslashes($_POST['message']));
    
$telefono trim(stripslashes($_POST['telefono']));
    
$empresa trim(stripslashes($_POST['empresa']));

    
// Verificando
    
var_dump($name); 
    
var_dump($email); 
    
var_dump($subject); 
    
var_dump($message);
    
var_dump($telefono);
    
var_dump($empresa);

     echo 
"<br/>";
    
    
$email_from $email;
    
$email_to '[email protected]';//replace with your email

    
$body 'Nombre: ' $name "\n\n" 'Email: ' $email "\n\n" 'Asunto: ' $subject "\n\n" 'Mensaje: ' $message "\n\n" 'Telefono: ' $telefono "\n\n" 'Empresa: ' $Empresa;

    
$success mail($email_to$subject$body'From: <'.$email_from.'>');
   if(!
$success 
     {echo 
"Fallo al enviar el mail.";}
   else
        {echo 
json_encode($status);}
    die;
    
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 23/01/2015, 11:16
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Error con envio de correo PHP

Cita:
Iniciado por Rubbb Ver Mensaje
He modificado el código de la siguiente forma:

Código PHP:
<?php
    header
('Content-type: application/json');
    
$status = array(
        
'type'=>'success',
        
'message'=>'Gracias por ponerse en contacto con nosotros. Le contestaremos lo antes posible. '
    
);
    
    
$name $_POST['name']; 
    
$email $_POST['email']; 
    
$subject $_POST['subject']; 
    
$message $_POST['message'];
    
$telefono $_POST['telefono'];
    
$empresa $_POST['empresa'];

    
$email_from $email;
    
$email_to '[email protected]';//replace with your email

    
$body 'Nombre: ' $name "\n\n" 'Email: ' $email "\n\n" 'Asunto: ' $subject "\n\n" 'Mensaje: ' $message "\n\n" 'Telefono: ' $telefono "\n\n" 'Empresa: ' $Empresa;

    
$success = @mail($email_to$subject$body'From: <'.$email_from.'>');

    echo 
json_encode($status);
    die;
?>
He probado 1000 cosas, cambiando variables, quitandolas, probando códigos nuevos, pero no me funciona nada. Sigue dandome la misma salida que la foto del primer post...
Intenta enviarlo como HTML, agrega esto a tu codigo
Código PHP:
// Para enviar un correo HTML, debe establecerse la cabecera Content-type
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
$cabeceras .= 'From: <'.$email_from.'>';
echo 
mail($email_to$subject$body$cabeceras
    ? 
json_encode($status)
    : 
'No se pudo enviar el mail';
exit(); 
Tambien no estaria de mas que miraras las variables recibidas por post con un
Cita:
print_r($_POST);
Otro error que tienes que nadie te dijo es que pones
Cita:
"\n\n"
Cuando deberia ser "\r\n"
esto es interpretado como dos nueva linea, CRCR en vez de retorno de carro nueva linea CRLF
__________________
http://www.roglastudios.es

Última edición por Dalam; 23/01/2015 a las 11:45
  #11 (permalink)  
Antiguo 27/04/2015, 15:25
 
Fecha de Ingreso: abril-2015
Mensajes: 1
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con envio de correo PHP

amigo Rubb, me pasa exactamente lo kismo, lo has podido solucionar?
gracias de antemano!

Etiquetas: correo, 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 04:19.