Hola a todos.
Me he bajado una plantilla y no logro que me lleguen los mails que debe enviar, pero por más que reviso el código no encuentro el error. ¿Me echan una mano?
El código en el index es:
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Nombre" required="required">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required="required">
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Asunto" required="required">
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Ingrese su mensaje" required></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn-submit">Enviar</button>
</div>
</form>
Y el PHP (sendemail.php) es:
<?php$name = @trim(stripslashes($_POST['name'])); $from = @trim(stripslashes($_POST['email'])); $subject = @trim(stripslashes($_POST['subject'])); $message = @trim(stripslashes($_POST['message'])); $to = 'darifernandez17@gmail.com';//replace with your email$headers = array();$headers[] = "MIME-Version: 1.0";$headers[] = "Content-type: text/plain; charset=iso-8859-1";$headers[] = "From: {$name} <{$from}>";$headers[] = "Reply-To: <{$from}>";$headers[] = "Subject: {$subject}";$headers[] = "X-Mailer: PHP/".phpversion();mail($to, $subject, $message, $headers);die;
y no se si tendrá que ver, pero existe también una carpeta js que contiene un archivo main.js donde está este código referido también al formulario:
// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Gracias por contactarte con nosotros. En breve te responderemos</p>').delay(3000).fadeOut();
});
});
¿Saben donde puede estar el error?
Gracias.
Buenas, a mí me pasa exactamente lo mismo, mismo archivo.
He activado el registro php y quitado las @ según indicáis.
Tengo la librería jQuery también.
En el registro no me viene nada, exceto si cargo el archivo sendemail.php con el siguiente código modificado:
<?php$name = trim(stripslashes($_POST['name'])); $from = trim(stripslashes($_POST['email'])); $subject1 = trim(stripslashes($_POST['subject'])); $message = trim(stripslashes($_POST['message'])); $to = 'info@ecad.es';$headers = array();$headers = implode("\r\n", $headers);$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";$headers .= "From: {$name} <{$from}>\r\n";$headers .= "Reply-To: <{$from}>\r\n";$headers .= "Subject: {$subject1}\r\n";$headers .= "X-Mailer: PHP/".phpversion()."\r\n";mail($to, $subject, $message, $headers);die;
----------------------------
Que si que me dice
mod_fcgid: stderr: PHP Notice: Undefined index: name
también para email, subjet y message.
además de
mod_fcgid: stderr: PHP Notice: Undefined variable: subject
pero dándole al botón enviar no me llega nada de nada ni pone que haya error así que ni idea.
Cualquier cosa que os tenga que poner para que podáis ayudarme decirmelo.
Muchas gracias de antemano
Hola!
Hay cosas raras en tu código
$headers = implode("\r\n", $headers); no tiene sentido donde está
Estás declarando $headers como array pero después lo tratas como una cadena normal ¿?
Haz una prueba básica colocando esto al principio del fichero:
<?php// Texto del correo$msg = "Gracias por inscribirte en nuestra pagina web\nDesde ahora puedes participar";// usar wordwrap() si las líneas son muy largas$msg = wordwrap($msg,70);// enviar emailmail("tucorreo@tucorreo.com","Confirmacion de inscripcion",$msg);?>
Pon tu correo donde aparece tucorreo@tucorreo.com y comprueba que recibes el correo. Si no recibes puede ser que el servidor no esté ejecutando la función mail de php o que tengas algún problema de configuración.
Saludos!
He quitado el "implode" y añadido lo que me comentabas, dejando el código de la siguiente manera, si le doy directamente al archivo url/sendemail.php me llegan ahora dos emails puesto que has añadido un texto pero si le doy al botón enviar de la url no me sale nada de nada, ni mensaje en blanco ni nada extraño en el registro.
<?php// Texto del correo$msg = "Gracias por inscribirte en nuestra pagina web\nDesde ahora puedes participar";// usar wordwrap() si las líneas son muy largas$msg = wordwrap($msg,70);// enviar emailmail("email@email.es","Confirmacion de inscripcion",$msg);?>
<?php$name = trim(stripslashes($_POST['name'])); $from = trim(stripslashes($_POST['email'])); $subject1 = trim(stripslashes($_POST['subject'])); $message = trim(stripslashes($_POST['message'])); $to = 'email@email.es';$headers = array();$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";$headers .= "From: {$name} <{$from}>\r\n";$headers .= "Reply-To: <{$from}>\r\n";$headers .= "Subject: {$subject1}\r\n";$headers .= "X-Mailer: PHP/".phpversion()."\r\n";mail($to, $subject, $message, $headers);die;
En el index.html tengo
<form id="main-contact-form" name="contact-form" method="post" action="#">
<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Nombre" required="required">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required="required">
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Asunto" required="required">
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Introduzca su mensaje" required="required"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn-submit">Enviar</button>
</div>
</form>
Así mismo para el main.js
// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Se está enviando su email...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Gracias por contactar con nosotros. Le responderemos tan pronto como nos sea posible</p>').delay(3000).fadeOut();
});
});
Aprovecho para decir aunque ya os habrás/habréis dado cuenta que no soy informático ni estoy habituado a este lenguaje trabajo con ordenadores pero no en el tema de estos lenguajes informáticos. Es decir, puede que el error lo tenga delante pero no lo sé.
Otra cosa que añadir, cuando le doy al botón de enviar sólo me sale el texto:
"Gracias por contactar con nosotros. Le responderemos tan pronto como nos sea posible"
En cambio, si uso el archivo index.html desde el explorador de windows me sale "Se está enviando su email..."
No sé si sirve de algo.
Gracias de nuevo por vuestra ayuda