Vê se atende:

function ValidaEmail(sEmail: string): boolean;
const
    // Caracteres válidos em um "átomo"
    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 Oliveira Campioni
Analista de Sistemas
A-Tecnologia e Sistemas de Informacao Ltda.
Sao Joaquim da Barra - Sao Paulo - Brasil 
[EMAIL PROTECTED]


-----Mensagem original-----
De: Sérgio Rodrigo Alves Silva [mailto:[EMAIL PROTECTED] 
Enviada em: quarta-feira, 16 de março de 2005 11:14
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Validação de E-mail



Bom Dia Galera...

Alguém tem uma função ou procedimento q valide um endereço de e-mail?

Obrigado!



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.7.3 - Release Date: 15/03/2005
 



-- 
<<<<< 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

 



Responder a