Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mail() no envia

Estas en el tema de mail() no envia en el foro de PHP en Foros del Web. Hola pues mi formulario de contacto no envía y la funcion mail devuelve flase siempre, soy nuevo en php, estoy trabajando con ubuntu, les dejo ...
  #1 (permalink)  
Antiguo 27/02/2014, 10:49
 
Fecha de Ingreso: febrero-2014
Mensajes: 69
Antigüedad: 10 años, 1 mes
Puntos: 0
mail() no envia

Hola pues mi formulario de contacto no envía y la funcion mail devuelve flase siempre, soy nuevo en php, estoy trabajando con ubuntu, les dejo mi formulario y el php

formulario

<!-- START CONTACT FORM -->
<form action="contact.php" method="post" class="contact_form">
<p>
<label for="name">Nombre <span>*</span></label>
<input class="inputText" type="text" id="name" name="name" />
</p>
<div class="clear"></div>
<p>
<label for="email">E-mail <span>*</span></label>
<input class="inputText" type="text" id="email" name="email" />
</p>
<div class="clear"></div>
<p>
<label for="website">Website</label>
<input class="inputText" type="text" id="website" name="website" />
</p>
<div class="clear"></div>
<p>
<label for="message">Mensaje <span>*</span></label>
<textarea class="inputTextarea" cols="88" rows="6" id="message" name="message"></textarea>
</p>
<div class="clear"></div>
<p class="submit">
<input class="button white" type="submit" value="Enviar" />
</p>
</form>
<!-- END CONTACT FORM -->


el php

<?php
if(isset($_POST['email'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = "[email protected]";
$email_subject = "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['website']) ||
!isset($_POST['message'])) {

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $_POST['name'] . "\n";
$email_message .= "E-mail: " . $_POST['email'] . "\n";
$email_message .= "Website: " . $_POST['website'] . "\n";
$email_message .= "Mensaje: " . $_POST['message'] . "\n\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();

//mail($email_to, $email_subject, $email_message, $headers);

if (mail($email_to, $email_subject, $email_message, $headers)) {
echo("¡El formulario se ha enviado con éxito!");
}
else {
echo('envio fallido');
}

}
?>

Última edición por sam03; 27/02/2014 a las 13:08
  #2 (permalink)  
Antiguo 27/02/2014, 14:57
Avatar de mili_07  
Fecha de Ingreso: febrero-2012
Mensajes: 58
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: mail() no envia

Intenta al tag label cambiarle el nombre, en vez de "email" trata con otro nombre y en tu php primero recupera los valores del formulario y asignalas a variables php por ejemplo:
Código PHP:
 $mail =  $_REQUEST['email']; 
y luego haz dentro del if:
Código PHP:
if(isset($mail)) 
Así el php recuperará una sola vez el valor y en vez de utilizar las variables $_POST cada vez que necesitas el valor, solo utilizas la variable php que asignaste al principio del documento.
Además para saber si estas recuperando bien los valores puedes hacer un echo de las variables para ver si te esta recuperando los valores del formulario. Prueba y cuentanos! Saludos
__________________
...Si quieres que tu código funcione y tienes errores, borra todo y vuelve a empezar...
  #3 (permalink)  
Antiguo 27/02/2014, 19:27
 
Fecha de Ingreso: febrero-2014
Mensajes: 69
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: mail() no envia

Pues ahora cuando se ejecuta el php solo me queda todo en blanco
  #4 (permalink)  
Antiguo 27/02/2014, 19:49
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: mail() no envia

debes de tener configurado el php.ini para que conecte con tu servidor de mail.
Si no sabes hacer esto mira metodos de envio po SMTP o por POP3 usando php y un servidor de correo externo.
Para cualquier duda ponte en contacto con migo por redes sociales, que por aqui no me entero mucho de cuando me escriben.
Un saludo
  #5 (permalink)  
Antiguo 27/02/2014, 19:52
 
Fecha de Ingreso: febrero-2014
Mensajes: 69
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: mail() no envia

modifique el php para que solo quedara envío y obviar la validación, me quedo de esta forma

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = '[email protected]';
$email_subject = 'Contacto desde el sitio web';

$nombre = $_REQUEST['name'];
$email = $_REQUEST['email'];
$website = $_REQUEST['website'];
$mensaje = $_REQUEST['message'];

// if(isset($email)) {

// // Aquí se deberían validar los datos ingresados por el usuario
// if(!isset($nombre]) ||
// !isset($email) ||
// !isset($website) ||
// !isset($mensaje) {

// echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
// echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
// die();
// }

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $nombre . "\n";
$email_message .= "E-mail: " . $email . "\n";
$email_message .= "Website: " . $website . "\n";
$email_message .= "Mensaje: " . $mensaje . "\n\n";

// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();

if (mail($email_to, $email_subject, $email_message, $headers)) {
echo("¡El formulario se ha enviado con éxito!");
}
else {
echo("envio fallido");
}

// }
?>

Pero cuando se ejecuta me manda el mensaje de envío fallido
  #6 (permalink)  
Antiguo 27/02/2014, 20:19
 
Fecha de Ingreso: febrero-2014
Mensajes: 69
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: mail() no envia

ya lo solucione, para solucionarlo tuve que instalar sendmail y configurar el php.ini con lo siguiente

donde dice
;sendmail_path =

lo cambie por
sendmail_path = /usr/sbin/sendmail -t -i

esto lo encontre aqui:
http://blog.maximilianomarin.com/2013/04/enviar-correos-desde-php-sobre-ubuntu/

así es como me quedo al final el código, elimine las validaciones, luego las haré con javascript.

<?php
// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = '[email protected]';
$email_subject = 'Contacto desde el sitio web';

$nombre = $_REQUEST['name'];
$email = $_REQUEST['email'];
$website = $_REQUEST['website'];
$mensaje = $_REQUEST['message'];

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $nombre . "\n";
$email_message .= "E-mail: " . $email . "\n";
$email_message .= "Website: " . $website . "\n";
$email_message .= "Mensaje: " . $mensaje . "\n\n";

// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();

if (mail($email_to, $email_subject, $email_message, $headers)) {
echo("¡El formulario se ha enviado con éxito!");
}
else {
echo("envio fallido");
}

?>
  #7 (permalink)  
Antiguo 28/02/2014, 12:00
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Mensaje Respuesta: mail() no envia

Filtra las variables que obtienes con php tambien, por que si un usuario envia variables no validas directamente, al no filtrarlas el sistema sera vulnerable, por que javascript lo puedes modificar con pocos conocimientos desde el navegador.

Yo te recomiendo que siempre filtres resultados desde php, hacerlo desde javascript es mas que nada para no enviar tantas solicitudes, pero nunca tienes que confiar en lo que un usuario introduzca.
Un saludo
  #8 (permalink)  
Antiguo 28/02/2014, 18:22
 
Fecha de Ingreso: febrero-2014
Mensajes: 69
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: mail() no envia

vere como se puede hacer eso, gracias
  #9 (permalink)  
Antiguo 17/03/2014, 06:54
 
Fecha de Ingreso: marzo-2014
Mensajes: 11
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: mail() no envia

-------------------------------------------

Última edición por Syst; 21/03/2014 a las 03:19 Razón: He abierto nuevo hilo, éste estaba cerrado :(

Etiquetas: envia, formulario, mail
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 10:21.