Indudablemente que validar un correo electronico tiene sus asegunes, hasta ahora se ha tratado de verificar la semantica del correo, pero eso solo nos dice que se escribio bien, yo agregaria un paso mas recuperando la IP del servidor de correo, usando el código que seoane acaba de proporcionar en otro hilo.
Aqui pego el código el cual nos garantiza al menos que se esta usando un servidor válido. Solo necesitamos agregar www. y lo que sigue del @.
Código Delphi
[-]
Uses Winsock;
function GetIp(Host: string): string;
var
WSAData: TWSADATA;
HostEnt: phostent;
begin
Result:= '';
if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
begin
HostEnt:= gethostbyname(PChar(Host));
if HostEnt <> nil then
Result:= String(inet_ntoa(PInAddr(HostEnt.h_addr_list^)^));
WSACleanup;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ShowMessage(GetIp('www.hotmail.com'));
ShowMessage(GetIp('www.esunabroma.com')); ShowMessage(GetIp('www.yahoo.com.mx'));
ShowMessage(GetIp('www.yahoo.com'));
ShowMessage(GetIp('www.esunabroma.com')); ShowMessage(GetIp('www.clubdelphi.com'));
ShowMessage(GetIp('www.clubdelphi.com.mx')); end;
Esto nos regresa la IP si está correcto el servidor de correo, de otra forma nos da un valor nulo.
Yo creo que esto ya es un gran avance.
Saludos