Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/06/2004, 08:01
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La función mail devuelve un "true" o "false" según pueda o no ejecutarse (conectar con el MTA para entregar el e-mail .. eso no significa que lleguen a sus destinatario por médio de ese MTA (servidor SMTP, sendmail o similares que lo envie).

así que podrías usarlo tipo:

Código PHP:
if (@!mail(.....)){
// aquí registras tus errores.

se usa @ para "silenciar" los mensajes de error de esa única función .. y aprovechando que es un "booleano" lo que devuelve .. pues lo uso en un condicional (y lo niego ! para no hacer el else ...) .. SI hay error .. registro el error en mi BD o lo muestro o como corresponda ...

En la práctica .. la mayoría de veces PHP consigue conectar con el MTA del servidor para "entregarle" el e-mail .. PHP llegado este punto de "entrega" .. desconecta y si hay errores en la entrega final al destinatario es ese servidor de correo el que hará los re-intentos ("relay") para enviar el e-mail .. según esté configurado al N intento devolverá un e-mail al remitente diciendo el problema (a la cuenta que se especifique o al mismo remitente). Otros servidores de correo no emiten esas respuestas ...

La única solución para ver si realmente existe una cuenta de correo X o de los problemas que pueda tener .. es conectar vía socktes directo a ese servidor SMTP (si es que lo permite) e intentar mandar el e-mail .. ahí será cuando dé algún mensaje de error.

Lo más básico es comprobar vía régistros MX de la IP del host (nombre@bhost.tal) si la cuenta existe como "servidor de e-mail" .. ahora .. que el usuario a su vez exista depende de ese servidor SMTP si deja conectarse a el para verlo ..

Para rematar todo esto .. el proceso es "leennnto" para hacer ese chequeo pues .. se conecta a X servidor (por sockets) y se empieza a "negociar" con parte del protocolo SMTP intentando el envio y leyendo las respuestas que se dan.

Un saludo,

Última edición por Cluster; 15/06/2004 a las 08:12