Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ok

Gracias JXJ por su respuesta, tiene muchísima razón con respecto a sus comentarios sobre el regreso de respuesta por parte del servidor de correo, he investigado un poco y me he percatado que no va hacer muy exacto el monitoreo de envios de EMAILS a Direcciones Incorrectas, pero en fin algo saldrá más preciso.... de ante mano gracias ...

Que tengan buen día.
Responder Con Cita
  #2  
Antiguo 27-05-2005
S.M.S. S.M.S. is offline
Miembro
 
Registrado: jun 2003
Ubicación: España
Posts: 56
Poder: 21
S.M.S. Va por buen camino
Yo utilizo la siguiente función que no recuerdo de donde la saqué, pero que funciona perfectamente con los ejemplos de jachguate y de roman

Código Delphi [-]
function ValidEmail(email: string): boolean;
   // Devuelve True si la dirección de email es válida
   const
     // Caracteres válidos en un "átomo"
     atom_chars = [#33..#255] - ['(', ')', '<', '>', '@', ',', ';', 
     ':', '\', '/', '"', '.', '[', ']', #127];
     // Caracteres válidos en una "cadena-entrecomillada"
     quoted_string_chars = [#0..#255] - ['"', #13, '\'];
     // Caracteres válidos en un 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, subdomains: integer;
     c: char;
begin 
  State := STATE_BEGIN;
  n := Length(email); 
  i := 1;
  subdomains := 1; 
  while (i <= n) do 
    begin
      c := email[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(subdomains);
                      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 (subdomains >= 2);
end;
Saludos.
Responder Con Cita
  #3  
Antiguo 27-05-2005
johncook johncook is offline
Miembro
 
Registrado: oct 2004
Posts: 65
Poder: 20
johncook Va por buen camino
Muchachos, muchachos... Tanto lío para validar un mail...
Porque mejor no valernos de expresiones regulares, no? En C# no hay q instalar ninguna libreria de terceros para el uso de éstas expresiones... En delphi yo utilizo RegExpr, porque desconozco si existe alguna función nativa del lenguaje...
Código Delphi [-]
 uses RegExpr;
 
procedure TForm1.Button1Click(Sender: TObject);
// Valida la dirección de email en Edit1
begin
  if not ExecRegExpr('[\w\d\-\.]+@[\w\d\-]+(\.[\w\d\-]+)+',
      Edit1.Text) then begin
    ShowMessage('La dirección de email no es válida');
    Edit1.SetFocus;
  end else
    ShowMessage('La dirección de email es válida');
end;
Les dejo el enlace

Última edición por vtdeleon fecha: 03-10-2006 a las 19:45:04.
Responder Con Cita
  #4  
Antiguo 27-05-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Puedes conectarte al servidor smtp del dominio al que quieres mandar el mail, y con un par de comandos, puedes saber si esa cuenta existe en dicho servidor. Digo, si te refieres a validar que existe, y no exactamente a validar la sintaxis de la direccion.
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #5  
Antiguo 27-05-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Muchas Gracias por sus respuestas, estoy tomando en cuenta todas sus opiniones, Que Tengan Buen Día....!!!!
Responder Con Cita
  #6  
Antiguo 28-05-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
johncook

Una busqueda rapida, me llevo a sitios
Pero ya estan muertos.

¿¿Cual es el enlace. ??

gracias.
Responder Con Cita
  #7  
Antiguo 28-05-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Con la ayuda de algunos trucos, he llegado al nuevo sitio oficial de TRegExpr para delphi

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:23:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi