Luego de dar unas cuentas vueltas en Internet y de buscar por ahí, he llegado a la conclusión de que es imposible, sencillamente, conocer si una dirección de correo existe realmente. Mis impresiones las he dejado al final de este hilo en los foros del ClubDelphi.
Lo que sí que es posible es determinar si una determinada dirección de correo es válida sintácticamente hablando. Para esto pueden darse y de hecho se dan varias soluciones, y es posible seguir alguna de ellas. Si lo estimáis oportuno puedo incluir una acción para esta tarea en el plugin NeoDouble.
Pero, comprobar si verdaderamente existe una dirección de correo cualquiera... se me antoja tan complicado que me atrevo a decir que es imposible. Y que quien prometa que su programa hace algo así... o miente, directamente (porque pretenda engañar, por ejemplo), o es un mago que utiliza técnicas que a mí ni se me ocurren...
Publicada el Martes, 16/10/2007 por David Esperalta
Suscribirse a esta entrada - URL para Trackbacks
No recuerdo bien, pero había algún pub por ahí, o una función que hacía esto. Comprobaba si una cadena de texto era un email válido, comprobando @, espacios, etc.
Otra cuestion es saber, tal como dicen en el hilo, si esa dirección existe en un servidor determinado.
Hola Peri,
No recuerdo si había o no un "pub" ya preparado, pero, de hecho es como dices, es decir, con Neobook y más o menos trabajo, puede lograrse averiguar si una dirección de correo es válida, sintácticamente hablando.
Pero, comporbar que existe en un servidor... más aún, cualquier dirección, en cualquier servidor... eso ya es harina de otro costal. Por ejemplo, supón que tratas de averiguar si existe una dirección en Gmail.
Para empezar necesitarás "logearte" en Gmail, puesto que su servidor SMTP no tratará contigo si no lo haces. Eso en lo que toca a Gmail, pero, ¿qué hay de otros servidores? Está complicado el asunto, verdaderamente, y de hecho poca información se encuentra, y, la que se encuentra, pareciera "interesada", o sea, como una especie de "reclamo", para que piques...
David es incorregible, le mencione el tema y se puso a estudiarlo al toque, la idea parte del accionar de dec_relay (sospecho que en su interior esta trabajando minirelay) que realiza su tarea a la perfección, sólo que en vez de despachar el cortreo solo pregunte si la cuenta existe una cosa asi (usando smtp):
220-ns.watson.ibm.com ESMTP Sendmail AIX4.3/8.9.3/8.9.0
HELO cisco.my.net
250-ns.watson.ibm.com Hello cisco.my.net [112.44.72.94], MAIL FROM:
250 ... Sender is valid.
RCPT TO:
550 ... User unknown
RSET
QUIT
Como se da el caso en que el server tarda en contestar se asign un tiempo de time out y se clasificarian los email como validos, no validos y time out, siendo estos ultimos ni uno ni otro pues no se obtuvo respuesta del server salu2
Hola,
No; no es minirelay quien está en el interior de dec_Relay, sino el componente "TSmtpRelayServer" para Delphi. Pero, vamos, que yo insisto en lo mismo... probaste con una dirección de correo, pero, ¿qué pasa si es una dirección de GMail? ¿Qué hay de otros servidores?
Yo en mis pruebas con el comando "RCTP TO" probé con una dirección (existente) en Wanadoo.es y no hubo manera... el servidor respondía que había problemas con el comando utilizado. Probé de varias formas, y, puesto que creo que yo no me equivocaba, debe ser que Wanadoo no responde al comando "RCTP TO", o, a lo menos, no responde como se espera.
Ya digo. El asunto es bastante complicado... pero no por complicado lo desestimo, sino porque puede que sea, directamente, imposible. Podría lograrse algo, pero, sería parcial, desde luego, y no una solución total y completa.
Ok de acuerdo, una vez mas muchas gracias David salu2
Nada hombre, Raúl, no faltaba más. :)