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

2votos

enviar al correo recogido en un formulario

Por la razón que desconozco ,no me funciona lo que quiero hacer y no es más que enviar al correo que me ha dicho el usuario su clave asociada en la bbdd

Después de abrir la conexión con la bbdd

$email = htmlentities($_POST["email"]); 

$sql = 'SELECT password FROM usuarios WHERE email=\''.$email.'\' ';

$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$pas = $row['password'];

         $sentTo = "$email";    // Aquí es donde relaciono el email a la función    
         $subject = "formulario"; 
         $headers .= ""; 
         $message = "\n Su password es : " . $pas ; 
         mail($sendTo, $subject, $message, $headers); 

No me están llegando ningún mensaje.
Cómo lo podría depurar.
Soy consciente que estoy usando variables deprecates

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola Gonzalss,

el código luce bien.

Lo más probable es que su máquina de desarrollo no esté configurada como un servidor de correo válido para funcionar en internet. Generalmente para que los servidores de correo acepten los e-mails tenés que tener una IP pública referenciada con reversas DNS al menos.

Si estás desarrollando en una PC con GNU/Linux es muy fácil probar esto localmente: todo usuario del sistema tiene asociada una cuenta de correo local. Si tu usuario para entrar es "gonza", podés probar enviar un e-mail a gonza@localhost y luego ver si te llega al buzón local de mensajes (e incluso podrías ver el e-mail en crudo en el directorio /var/spool/mail del sistema).

Si usás otro sistema operativo, lo mejor es probar esto en un servidor de hosting directamente...

Para verificar que la función mail() esté funcionando, evaluala con un IF:

if( mail($sendTo, $subject, $message, $headers)){
   print "mensaje enviado";
} else {
   print "no se envió el mensaje";
}

Si ves en la pantalla "mensaje enviado" tu código está bien y el problema es relativo al servidor de e-mail.

Saludos!

0voto

gonzalss comentado

Pero no me llegan los correos únicamente con este código,ya que en los distintos formularios que tengo en la web si que me llegan . Por lo que me da la sensación que es de código.
¿ Con el if es el único modo de depurarlo ?

0voto

gonzalss comentado

Rectifico mi correo , me llegan sólo un par de correo con la contraseña,pero sólo 3 correos. ¿ A partir de ahí no llega nada ?

0voto

Leonardo-Tadei comentado

Si llega un mensaje, es que el código está bien.

Podrías buscar los siguientes entre el spam (si no es que el servidor de correo los descarta al detectar mensajes iguales enviados muy seguido).

Desde el lado de PHP, la única forma de depurar es el 'if( mail() )'

Desde el lado del servidor, tenés los log sel servidor de mail, pero si no sos el sysadmin, no tenés acceso a ellos.

Poner el IF no duele y sirve para decirle al usuario "le hemos enviado la contraseña" o un "hubo un error, intente más tarde"...

En cualquier caso, si recibiste un e-mail al menos es que tu código está bien y podemos dar por cerrado este tema (y abrir otros sobre algún otro detalle!)

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