Estimado, Saudações. Você fez uma busca rápida por aí (google mesmo). Achei isso:
function ValidaEmail(sEmail: string): boolean; const // Caracteres válidos ATOM_CHARS = [#33..#255] - ['(', ')', '<', '>', '@', ',', ';', ':', '\', '/', '"', '.', '[', ']', #127]; // Caracteres válidos em uma cadeia QUOTED_STRING_CHARS = [#0..#255] - ['"', #13, '\']; // Caracteres válidos em um subdominio LETTERS = ['A'..'Z', 'a'..'z']; LETTERS_DIGITS = ['0'..'9', 'A'..'Z', 'a'..'z']; SUBDOMAIN_CHARS = ['-', '0'..'9', 'A'..'Z', 'a'..'z']; type States = (STATE_BEGIN, STATE_ATOM, STATE_QTEXT, STATE_QCHAR, STATE_QUOTE, STATE_LOCAL_PERIOD, STATE_EXPECTING_SUBDOMAIN, STATE_SUBDOMAIN, STATE_HYPHEN); var State: States; i, n, iSubdomains: integer; c: char; begin State := STATE_BEGIN; n := Length(sEmail); i := 1; iSubdomains := 1; while (i <= n) do begin c := sEmail[i]; case State of STATE_BEGIN: if c in atom_chars then State := STATE_ATOM else if c = '"' then State := STATE_QTEXT else break; STATE_ATOM: if c = '@' then State := STATE_EXPECTING_SUBDOMAIN else if c = '.' then State := STATE_LOCAL_PERIOD else if not (c in atom_chars) then break; STATE_QTEXT: if c = '\' then State := STATE_QCHAR else if c = '"' then State := STATE_QUOTE else if not (c in quoted_string_chars) then break; STATE_QCHAR: State := STATE_QTEXT; STATE_QUOTE: if c = '@' then State := STATE_EXPECTING_SUBDOMAIN else if c = '.' then State := STATE_LOCAL_PERIOD else break; STATE_LOCAL_PERIOD: if c in atom_chars then State := STATE_ATOM else if c = '"' then State := STATE_QTEXT else break; STATE_EXPECTING_SUBDOMAIN: if c in letters then State := STATE_SUBDOMAIN else break; STATE_SUBDOMAIN: if c = '.' then begin Inc(iSubdomains); State := STATE_EXPECTING_SUBDOMAIN end else if c = '-' then State := STATE_HYPHEN else if not (c in letters_digits) then break; STATE_HYPHEN: if c in letters_digits then State := STATE_SUBDOMAIN else if c <> '-' then break; end; Inc(i); end; if i <= n then Result := False else Result := (State = STATE_SUBDOMAIN) and (iSubdomains >= 2); //se sEmail esta vazio retorna true if sEmail = '' then Result := true; end; --- []'s Alexandre msn: [EMAIL PROTECTED] -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Cleiton Enviada em: quinta-feira, 18 de agosto de 2005 13:32 Para: Delhpi Assunto: [delphi-br] Função Que Valida E-mail Alguém conhece alguma função que valide e-mail? -- Esta mensagem foi verificada pelo sistema de antivírus e acredita-se estar livre de perigo. -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html