
A program csak akkor talál eredményt, ha van olyan e-mail üzenete a megadott outlook mappában, melynek van állomány melléklete, amelyben http:// kezdetű linkek vannak!
Először meg kell nyitnunk az Outlook-ot, és le kell kérdeznünk a mappák főkönyvtárát.
FOutlook:=CreateOleObject('Outlook.Application');
FNameSpace:=FOutlook.GetNameSpace('MAPI');
A kapcsolatot OleVariant típusú változók segítségével valósítjuk meg. Az OleVariant típus használatához a uses listában fel kell sorolnunk a COMOBJ unit nevét is.
Egy Outlook mappának lehet további almappája is. Az összes mappát meg kell keresnünk. A megtaláltakat egy TreeView komponens segítségével jelenítjük meg, hierarchiájuknak megfelelően.
A főkönyvtár mappáival könnyű dolgunk van, azokat az FNamespace objektum Folders tulajdonságán keresztül elérhetjük.
for i:=1 to FNamespace.Folders.Count do
AddToView(FNamespace.Folders.Item(i));
Az AddToView metódus végzi el a TreeView komponens fő csomópontjainak létrehozását.
A további almappák eléréséhez rekurziót kell használnunk, amelyet a SearchSubFolders metódus valósít meg.
procedure SearchSubFolders(Folder: OleVariant; Node: TTreeNode);
A paraméterként kapott mappa további almappáit a Folders property-n keresztül érhetjük el.
if Folder.Folders.Count>0 then
for i:=1 to Folder.Folders.Count do
SearchSubFolders(Folder.Folders.Item(i),SubNode);
Ha a Folders.Count értéke nagyobb nullánál, akkor az objektum rendelkezik almappákkal.
Ha a keresés véget ért, akkor a TreeView1 objektumban egy fa szerkezet segítségével láthatóak a megtalált mappák. Amikor ezek közül kijelölünk egyet és a „Linkek keresése” feliratú gombra kattintunk, akkor ismételten egy rekurzív keresés segítségével meg kell találnunk a kiválasztott mappát, mint objektumot, az FNamespace.Folders-ből kiindulva.
Ha azonosítottuk a mappát, akkor az FFolder változóba bekerül a kiválasztott mappához tartozó objektum.
Végig kell néznünk a mappában szereplő összes mail-t, a mail-eken belül pedig a csatolt állományokat. Egy mail objektumot az alábbi módon érhetünk el.
FMailItem:=FFolder.Items.Item(i);
A mail-hez tartozó csatolt állományokat az FMailItem.Attachments kollekció segítségével érhetjük el. A kollekció minden egyes eleme egy csatolt állomány. A csatolt fájlok feldolgozását a SearchAttachements metódus végzi.
A csatolt állományok különböző formátumú állományok lehetnek. Nekünk olyan karaktersorozatot kell keresnünk, amely a „http://” taggal kezdődik. Célszerű az állományt lementenünk lemezre, majd karakterenként feldolgoznunk.
Egy csatolt állományt a SaveAsFile metódussal menthetünk lemezre.
Attachements.Item(i).SaveAsFile(ExtractFilePath(Application.ExeName)+'Temp.txt');
A lementett állományt karakter típusú állományként nyitjuk meg.
Először meg kell keresnünk benne a „http://” kezdőtagot. Ha megtaláltuk, akkor a további feldolgozást a Link, String típusú változó segítségével folytatjuk. Egy URL címben az alábbi karakterek szerepelhetnek.
[#13,#10,':','&','@','=','/','?','.','0'..'9','a'..'z']
A beolvasott karaktereket a LowerCase függvénnyel kisbetűkké alakítjuk, ezért a halmazban csak az angol ABC kis betűinek kell szerepelnie.
Ha a feldolgozás során olyan karaktert olvasunk be, amely ebben a halmazban nem szerepel, akkor a link végéhez értünk, és azt meg kell jelenítenünk a ListBox-ban. Ezután kezdődhet elölről a „http://” keresése.
A karakterek beolvasása során különös figyelmet kell szentelnünk a #13 és #10 karaktereknek, amelyek sortörést jelentenek. Ezek a karakterek megtörhetik az állományokban található linkeket. Feldolgozásnál ezt a két karaktert nem vesszük figyelembe.
A kereső ciklusokból kiléphetünk a CheckBox használatával. Hogy ezt a funkciót használni tudjuk, a ciklusokban gondoskodnunk kell az Application.ProcessMessages utasítás meghívásáról.