Evo kako sam to odradio:
Code:
function CheckEmailValidity (email : string) : boolean;
begin
Result := not ((Length (email) < 5) or (Pos ('@', email) = 0));
end;
function ParseEmail (text: string): TStrings;
const
InvalidChars = ' ' + #13 + #10 + #9 + ',:<>' + '"' + '''';
var
i : Integer;
tmpStr : string;
begin
Result := TStringList.Create;
i := 0;
repeat
Inc (i);
if IsDelimiter (InvalidChars, Text, i) then begin
tmpStr := copy (Text, 1, i - 1);
Delete (Text, 1, i);
if CheckEmailValidity (tmpStr) then Result.Add (tmpStr);
i := 0;
end;
until i >= Length (Text);
if CheckEmailValidity (Text) then Result.Add (Text);
end;
Funkcijom ParseEmail se iz ulaznog stringa izdvaja ciste email adrese. Ulaz je string koji moze da sadrzi i vise email adresa po sintaksi zaglavlja email poruka. U slucaju potrebe, konstantu InvalidChars treba prosiriti i sa drugim znacima koji se ne smeju naci u email adresi te se izdvajanje moze vrsiti iz bilo kog teksta.
Izlaz je TStringList koji sadrzi izdvojene email adrese.
Provera email adrese se vrsi funkcijom CheckEmailValidity koja je veoma jednostavna jer nisam imao potrebe za boljom, a ako je potrebna ozbiljnija provera, onda izmeniti ovu funkciju. Ako neko napravi bolju neka posalje kod.
[Ovu poruku je menjao broker dana 10.10.2005. u 17:35 GMT+1]