C# - Outlook programozásának alapjai

Outlook programozása 1. rész

forráskód letöltése
Office alkalmazások programozását vizsgáló sorozatunk most induló részében áttérünk az Outlook programozására. Első részben azt vizsgáljuk, hogy miként érhető el programból az Outlook, hogyan olvashatók ki az Inbox-ban (Beérkezett üzenetekben) lévő e-mail-ek adatai, mint például a feladó, levél tárgya, beérkezés időpontja, valamint az e-mail szövege.
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;                                               
        ...
    }

Outlook programozása cikksorozat