|
|
Outlook beérkezett üzenetek exportálása fájlba
|
|
Példaprogram letöltése
5767 bájt
|
Az Outlook programban lehetőség van az e-mail-ek mentésére fájlba. Ebben a példában egy olyan alkalmazást készítettünk, amely a Beérkezett üzenetek mappában lévő összes e-mail-t külön fájlként elmenti egy általunk megadott alkönyvtárba. A fájlok ugyanolyan hierarchikus elrendezésben lesznek tárolva alkönyvtárakba, ahogyan az Outlook-ban is voltak.
Ahhoz, hogy az üzeneteket el tudjuk menteni, természetesen kapcsolódni kell az Outlook alkalmazáshoz. Nem használunk Type Library-t, így az alkalmazásunk működése nem függ annak az Outlook alkalmazásnak a verziójától, amiből a Type Library-t készítettük.
A csatlakozás a mentés elkezdésekor, vagyis a Buttons1 komponens OnClick eseményének bekövetkezésekor történik meg:
FOutlook:=CreateOleObject('Outlook.Application');
Szükség van egy NameSpace objektumra is a mappák eléréséhez, ezt a GetNameSpace függvénnyel kérdezhetjük le. Ennek egy sztring paramétere van, ami minden esetben „MAPI” kell, hogy legyen. Az objektumot az FNameSpace OleVariant típusú globális változóban tároljuk:
FNameSpace:=FOutlook.GetNameSpace('MAPI');
A mentést a ScanFolder eljárás végzi el. Ennek paraméterként – a mentés helyének útvonalát tartalmazó paraméter után, – meg kell adni az Outlook mappa objektumát, amit a NameSpace objektumon keresztül a GetDefaultFolder függvénnyel kérdezünk le. Ennek paramétere a mappa azonosítója. Ez egy konstanssal is megadható, ha Type Library-t használunk (olFolderInbox), de mivel nem ezt tesszük, ezért számmal adjuk meg. A Beérkezett üzenetek mappa azonosítója 6, tehát a ScanFolders függvényt a következőképpen hívjuk meg:
ScanFolders(Edit1.Text, FNameSpace.GetDefaultFolder(6));
Ha az eljárás lefutott, akkor a Quit metódussal kilépünk az Outlook-ból.
Első lépésben az eljárás ellenőrzi, hogy a paraméterként megkapott mappa milyen típusú elemeket tartalmaz. Ez a DefaultItemType property-ből tudható meg. Mivel csak az e-mail-ekkel foglalkozunk, ezért a megfelelő érték 0, vagy Type Library esetén az olMailItem konstans. Ezután ellenőrizzük, hogy a megadott elérési útvonal létezik-e már, és ha nem, akkor létrehozzuk azt. Ezt a két dolgot egyszerre rábízzuk a ForceDirectories függvényre, amely megnézi, hogy a paraméterként átadott könyvtár létezik-e, és ha nem, akkor létrehozza azt. Ezt még akkor is megteszi, ha a megadott útvonalon több könyvtárat is létre kell hoznia.
A következő lépés az, hogy egy ciklusban végigmegyünk a mappában található további mappákon, és rekurzívan meghívjuk a ScanFolders eljárást. Erre azért van szükség, mert egy Outlook mappa, így a Beérkezett üzenetek mappa is az üzeneteken kívül további mappákat tartalmazhat, hasonlóan a fájlrendszer könyvtárszerkezetéhez. Egy mappa almappáit a Folders objektum Item property-jével tudjuk lekérdezni.
ScanFolders(path+folder.Folders.Item[i+1].Name+'\', folder.Folders.Item[i+1]);
Az Item egy tömb property, amelyben az első elem indexe nem 0, hanem 1.
A fenti művelet után a count változóba kiolvassuk az adott mappa elemeinek számát (ebbe nem tartoznak bele az almappák). Ez az Items.Count property-ből tudható meg:
count:=folder.Items.Count;
Egy ciklusban végigmegyünk a mappa elemein, és sorban kiolvassuk az elemek MailItem típusú objektumait egy OleVariant típusú változóba (mi). Ezt az Items függvénnyel tehetjük meg:
Az s változóban létrehozzuk a fájl nevét. Ez viszonylag hosszú lesz, de legalább benne lesz minden szükséges adat az e-mail azonosításához. A név első része a dátum és az idő, amit a ReceivedTime property-ből tudunk kiolvasni. Ezt a FormatDateTime függvénnyel a megfelelő formátumra alakítjuk. A fájlnév további része az üzenet tárgyából és a küldő nevéből áll. Az üzenet tárgya a Subject, míg a küldő neve a SenderName property-kből olvasható ki. Ezek tartalmazhatnak olyankaraktereket is, amelyek egy fájlnévben nem használhatók (pl. „:”), ezért a RemoveChar függvénnyel eltávolítjuk ezeket a karaktereket.
Ezután már nincs más dolgunk, mint meghívni a SaveAs függvényt, amely elmenti az e-mail-t a paraméterként megadott néven.
Ennek van egy második paramétere is, ami a fájl formátumát határozza meg. Ennek értékei a következők lehetnek:
- 0: TXT formátum (olTXT);
- 1: RTF formátum (olRTF);
- 3: MSG (üzenet-) formátum (olMSG). A példaprogramban ezt használtuk;
- 5: HTML formátum (olHTML).
A zárójelben megadott konstansok csak a Type Library alkalmazása esetén használhatók!
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 513. oldal
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|