2011-01-12 13 views
5

¿Cómo verificar si existe o no un id de correo electrónico usando PHP? y para obtener información sobre el propietario de la identificación de correo electrónico? ¿Es posible obtener la información sobre el propietario de la identificación del correo electrónico? ¿tiene que trabajar con algunos protocolos como POP? Por favor, ayúdame.¿Cómo verificar si existe una identificación de correo electrónico o no?

+1

Supongo que por "id", quiere decir "dirección". ¿Por qué quieres hacer esto? Aunque estoy seguro de que hay muchos casos de uso válidos, me suena a spam. – inkedmn

+0

@inkedmn: deseo utilizarlo en la página de registro del sitio web para verificar las direcciones de correo electrónico a fin de evitar el correo no deseado y los registros falsos. absolutamente para la detección de fraude! – brainless

+0

El envío de un enlace de activación es su única opción. – drudge

Respuesta

12

permite decir un usuario envía la siguiente dirección de correo electrónico:

Los cheques que se quieren llevar a cabo con el fin son así:

  • La dirección es válida
  • ¿El dominio ejecutan un servidor de correo/registros MX
  • ¿Es la lista negra

primer lugar dentro de PHP puede validar un correo electrónico mediante el uso de filter_var así:

$is_valid = filter_var("[email protected]",FILTER_VALIDATE_EMAIL); 

segundo lugar que se desea compruebe si el dominio ejecuta un servidor de correo electrónico, para ello puede verificar los registros dns para MX como lo siguiente:

$has_dns_mx_record = checkdnsrr("stackoverflow.com","MX"); 

También puede ser que desee para abrir el puerto en el dominio de este modo:

$socket = fsockopen("stackoverflow.com", 25); 
$mail_running = (bool)$socket; 
fclose($socket); 

También puede comprobar para ver si el servidor SMTP responde con un 550, es decir, correo electrónico no existe, así:

SEND > helo hi 
250 stackoverflow.com 

SEND > mail from: <[email protected]> 
250 2.1.0 Ok 

SEND > rcpt to: <[email protected]> 
> 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table 

En cuanto a lo anterior, puede enviar comandos a un servidor smtp válido como helo>mail from <...> y verificar la respuesta 550.

Echa un vistazo aquí para algunos códigos de respuesta: http://www.greenend.org.uk/rjk/2000/05/21/smtp-replies.html

También se debe tomar nota de la observación de @ slebetman que indica que un pequeño porcentaje de correo> servidores están configurados para responder 550 para evitar que el oler a cabo de direcciones de correo electrónico válidas.

La comprobación de la lista de negro es bastante simple, usted acaba de encontrar un servidor DNSBL decente que ofrece una puerta de entrada para comprobar comprobar el dominio para ver si ha sido bloqueado, si tiene el correo electrónico también puede ser válido y activo pero ha sido marcado como spam, por lo tanto es un correo electrónico no confiable y debe solicitar una dirección de correo electrónico alternativa para autorizar contra

Estas son algunas de las técnicas de validación utilizadas para validar una dirección de correo electrónico, ahora hay muchos más métodos de validación pero estos son algunos de los principales.

+4

Esto tiene un 99% de posibilidades de funcionar. Hay algunos servidores de correo que están configurados para que nunca se devuelva la respuesta 550, de modo que las secuencias de comandos no puedan detectar una dirección de correo electrónico válida. Mi propio servidor de correo electrónico está configurado así. También lo es el correo de Yahoo. – slebetman

+0

Muy buen punto, nunca pensé en eso. – RobertPitt

13

No existe una forma 100% garantizada de saber si una dirección de correo electrónico es válida sin enviar un correo electrónico y que el usuario responda de alguna manera. Hay controles que puede hacer para aumentar las posibilidades de saber si una dirección de correo electrónico es válida o no. Puede hacer una búsqueda DNS y ver si el dominio tiene un registro MX. También hay partes del protocolo SMTP que puede usar, pero nada exige que un servidor SMTP responda a estos comandos. Centralops.net proporciona un producto que puede ayudar, pero nuevamente, no está garantizado.

Si había una forma segura de manejar esto, ¿por qué prácticamente todos los sitios que tienen una función de registro requieren que respondas a un correo electrónico de alguna manera? La pregunta no pretende ser sarcástica; Solo espero que te ayude a ver que otros sitios no han podido realizar el mismo control que estás solicitando.

HTH

+1

encontré un enlace mientras buscaba en Google. http://www.verifyemailaddress.org/. ¿Cómo pudieron haberlo hecho? creo que lo hicieron bien – brainless

+1

Compruebe mi respuesta @brainless. – RobertPitt

+1

Pero no hay forma de ser positivo. Puede seguir los pasos descritos por RobertPitt, algo de lo que enumera tengo en mi respuesta (aunque lo explica en mayor detalle), pero al final del día, la única manera de saberlo con certeza es enviando un correo electrónico y haciendo el usuario responde de alguna manera. Algunos servidores SMTP le dirán que la dirección de correo electrónico no existe de inmediato, pero otros simplemente aceptan el correo electrónico y luego se apaga en el éter. Muchos servidores SMTP no responderán al comando de preguntar si existe una dirección de correo electrónico. Han desactivado esto para evitar el spam. –

Cuestiones relacionadas