Mint más Office alkalmazás esetén itt is először a szükséges referencia hozzáadásával kezdődik az új alkalmazás. Válasszuk tehát a Project - Add reference menüpontot. A megjelenő ablakban a COM lapon keressük elő a Microsoft Outlook 10.0 Object Library elemet. A verziószám természetesen más is lehet a telepített Office verziójától függően.
A referencia hozzáadása után máris létrehozhatunk egy Outlook alkalmazás objektumot.
private void button1_Click(object sender, System.EventArgs e)
{
Outlook.Application oa = new Outlook.Application();
A feladatunk az, hogy elérjük az Inbox tartalmát. Ehhez a levelezési névtér elérésére lesz szükségünk, így a már létrehozott Outlook alkalmazás GetNamespace függvényével lekérdezzük ezt. Eredményként kapunk egy NameSpace objektumot.
Outlook.NameSpace ns = oa.GetNamespace("MAPI");
Ezt az objektumot felhasználva már elérhetünk egy-egy mappát az Outlook levelezésében. Mivel most egy előre létrehozott mappára, az Inbox-ra van szükségünk, így a GetDefaultFolder függvényt használjuk, melynek paraméterként az olFolderInbox elemet adjuk. Visszatérési értékként kapunk egy MAPIFolder objektumot, mely jelen esetben a teljes Inbox-ot takarja. A NameSpace objektum GetDefaultFolder függvénye segítségével nem csak a beérkezett leveleinket tartalmazó mappa objektumát kaphatnánk meg. A függvény paramétere azt a mappát azonosítja, amit el szeretnénk érni. A mappa azonosítóját egy OlDefaultFolders felsorolt típussal lehet megadni, melynek értékei a következők lehetnek: olFolderCalendar (9), olFolderContacts (10), olFolderDeletedItems (3), olFolderDrafts (16), olFolderInbox (6), olFolderJournal (11), olFolderNotes (12), olFolderOutbox (4), olFolderSentMail (5), vagy olFolderTasks (13).
Outlook.MAPIFolder mf = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.MailItem mi;
string[] s = new string[3];
Most már indíthatunk egy ciklust, mely végigmegy az Inbox összes elemén és megjeleníti a beérkezett e-mail-ek tulajdonságait. Az elemeket az Items property-n keresztül érjük el, míg az elemek számát az Items property Count property-je adja. Az Items tömb 1-től kezdve sorszámozódik.
for (int i=1; i<=mf.Items.Count; i++)
{
Minden e-mail-t egy-egy MailItem osztály képvisel. Az adott e-mail eléréséhez az Items property Item függvényén keresztül vezet az út. A MailItem számtalan property-jén keresztül ezek után már könnyedén elérhetjük az adott e-mail-nek az adatait, mint például a küldő, a tárgy, a beérkezés időpontja.
mi = (Outlook.MailItem)mf.Items.Item(i);
s[0] = mi.SenderName;
s[1] = mi.Subject;
s[2] = mi.ReceivedTime.ToString();
listView1.Items.Add(new ListViewItem(s));
}
oa.Quit();
}
A következő feladat az, hogy a ListView-ben kiválasztott e-mail szövegét megjelenítsük egy TextBox kontrolban. Ezt a funkciót a ListView SelectedIndexChanged eseményénél valósítjuk meg.
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
...
Itt a már ismert módon létrehozunk egy kapcsolatot az Outlook-al és elérjük az Inbox-ot, majd ezt követően a ListView-ból kiválasztott sorszámú e-mail-t kérjük le az Item függvénnyel. A kapott e-mail Body property-jén keresztül pedig elérhetjük a levél tartalmát.
Outlook.MailItem mi = (Outlook.MailItem)mf.Items.Item(listView1.SelectedItems[0].Index+1);
textBox1.Text = mi.Body;
...
}