Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Parsiranje email adrese iz From polja

[es] :: Pascal / Delphi / Kylix :: Parsiranje email adrese iz From polja

[ Pregleda: 6040 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Parsiranje email adrese iz From polja07.10.2005. u 11:34 - pre 225 meseci
Da nema neko gotovu funkciju koja izvadi email adresu iz From polja zaglavlja email poruke?
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Parsiranje email adrese iz From polja07.10.2005. u 12:26 - pre 225 meseci
Mogu ti ja napisati samo mi reci kakav ulazni parametar zelis da das (string sa linijim u kojem je 'From: ....', naziv fajla poruke, TStringList u kojem je sadrzaj fajla poruke, nesto drugo...) i sta zelis na izlazu.

Bilo bi dobro da mi napises kako izgleda linija u kojoj je 'From: ...' podatak.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Parsiranje email adrese iz From polja07.10.2005. u 14:41 - pre 225 meseci
Srki, mogu i ja da napisem, nego gledam da nije neko vec to radio da ne krecim dzabe. From polje moze da sadrzi tekst prilicno raznolikog sastava, ukljucujuci i vise email adresa.

Recimo ovo je sve validan sadrzaj:

Pera Peric <[email protected]>

Pera Peric<[email protected]>

"Pera Peric" <[email protected]>

[email protected]

<[email protected]>


i sve kombinacije gornjih slucajeva ako je mail namenjen za vise primalaca, s timda su email adrese razdvojene zarezom....

Inace, format mail poruke ukjucujuci i adresa je definisan u RFC0822

 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
62.162.223.*

Sajt: right-sock.net


+1 Profil

icon Re: Parsiranje email adrese iz From polja07.10.2005. u 15:03 - pre 225 meseci
Ja sam radio nešto slično. Evo kako ja radim:

Code:

function CutStr(Tekst, StartString, EndString: string):string;
var
  StartPos, EndPos: integer;
begin
    StartPos:=stratpos(StartString, Tekst)+length(StartString);
    EndPos:=stratpos(EndString, Tekst);
    Result:=copy(Tekst, StartPos, EndPos-StartPos);
end;

function stratpos(FindWhat, FindWhere: string): integer;
var Rezultat: integer;
  i: integer;
begin
  Rezultat := -1;
  for i:=1 to length(FindWhere)-length(FindWhat) do
    if copy(FindWhere, i, length(FindWhat)) = FindWhat then
      Rezultat := i;
  Result:=Rezultat;
end;


Koristi se:

Code:

EMail:=cutStr("Pera Peric <[email protected]>", '<', '>');

routing protocols enable routers to route routed protocols!
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Parsiranje email adrese iz From polja07.10.2005. u 15:55 - pre 225 meseci
Ako mozes i sam... onda pici :)

Ja bih to licno ovako uradio:
Prvo bih razdvojio potencijalne adrese gde bi ',' ili ';' bio separator. Zatim bih pronasao gde se nalazi @ i onda bih isao levo i desno od @ sve dok se tu nalaze validni karakteri za email adresu (kazes da u RFC0822 o tome govore). Tako dobijas email adresu. Zatim proveris da li je mail ogranicen znakovima < i > i ako jeste slobodno ih izbacis iz dalje provere. Sad uzmes ostatak stringa, ako ima ispred ili iza praznih mesta skines ih, proveris da li su prvi i zadnji karakter navodnici i skines ih ako jesu i tako dobijes i naziv asociran za tu email adresu. Eto ti pa kuckaj funkciju :)
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Parsiranje email adrese iz From polja10.10.2005. u 09:36 - pre 225 meseci
Sojicu, dobar pokusaj ali nece da odradi na svim primerima. Stavise, zaboravio sam da kazem da se u From polju na bilo kom mestu moze naci TAB ili CR ili LF ili CRLF ili LFCR...

Srki, to kako si opisao jeste prvo sto pada na pamet, medjutim, sporo je. Ja imam neku ideju da prvo izdelim string napodstringove koristeci delimitere kao sto su space, zarez, tacka zarez, zagrade i slicno pa onda da izdvojim sve stringove koji sadrze @. Cini mi se brze.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Parsiranje email adrese iz From polja10.10.2005. u 16:09 - pre 225 meseci
Ovako radi Indy :)
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Parsiranje email adrese iz From polja10.10.2005. u 16:34 - pre 225 meseci
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]
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Parsiranje email adrese iz From polja

[ Pregleda: 6040 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.