C# - E-mail műveletek az Outlook-ban

Outlook programozása 2. rész

forráskód letöltése
Outlook programozásával foglalkozó sorozatunk mostani részében azt nézzük meg, hogy miként generáltathatunk tetszőleges tartalmú e-mail-t az Outlook-ba saját programunkból. Egy ilyen e-mail létrehozásakor mindazt megtehetjük programból, mint amit megtehetnénk magában az Outlook-ban egy új e-mail létrehozásakor. Ha programunkból ezzel a módszerrel küldünk e-mail-t, akkor ennek meg lesz az az előnye, hogy minden elküldött levelet az Outlook tárol is, így később azokat vissza is kereshetjük.
Első lépés most is egy referencia hozzáadása lesz az új alkalmazáshoz az Outlook-ról. A kapcsolat felvétel után egy új e-mail létrehozásához a CreateItem függvényt fogjuk használni. Ennek a függvénynek a segítségével különböző Outlook objektumokat tudunk létrehozni. Az objektum típusát egy OlItemType típusú konstanssal tudjuk megadni, mely a következők egyike lehet: olAppointmentItem (1), olContactItem (2), olJournalItem (4), olMailItem (0), olNoteItem (5), olPostItem (6), vagy olTaskItem (3). Ezek közül mi most az olMailItem konstanst használjuk, aminek következtében a függvény visszatérési értéke egy MailItem objektum lesz, és nekünk éppen erre lesz szükségünk.
    private void button1_Click(object sender, System.EventArgs e)
    {
      Outlook.Application oa = new Outlook.Application();
      Outlook.MailItem mi = (Outlook.MailItem)oa.CreateItem(Outlook.OlItemType.olMailItem);
Eredményül egy MailItem osztály példányát kapjuk vissza. A MailItem objektum To property-jébe kell megadnunk azt az e-mail címet, ahová a levelet küldeni akarjuk. A Subject property a levél tárgya, míg a Body a levél szövege. Ennyi általában elég is, tehát ha ezeket az adatokat megadtuk, akkor a Send metódussal el is küldhetjük az e-mail-t. A Send metódus hatására az új e-mail bekerül az Outlook Postázandó mappájába. Természetesen lehetőség van további adatok megadására, például tetszőleges fájlokat adhatunk hozzá a levélhez mellékletként (Attachments property), illetve megadhatjuk, hogy ki kapjon másolatot (CC property), illetve titkos másolatot a levélből (BCC property).
      mi.To = "animare@animare.hu";
      mi.Subject = "CSO teszt e-mail";
      mi.Body = "Üzenet szövege";
      mi.Attachments.Add(Application.StartupPath+"\\Form1.cs", m, m, m);
A létrehozott e-mail-t meg is jeleníthetjük a Display függvény hívásával, vagy akár megjelenítés nélkül is rögtön a Postázandó üzenetek (Outbox) mappába küldhetjük a Send függvény hívásával. Ha csak a Save függvényt használjuk, akkor ezzel menthetjük a létrehozott e-mail-t a Piszkozatok mappába.
      mi.Display(m);      
      //mi.Send();
      //mi.Save();
    }
A MailItem objektumnak számos más property-je és eljárása van, amiket nem csak új levelek létrehozásánál, hanem régebbi e-mail-ek tulajdonságainak lekérdezésénél is használhatunk. Ilyen például a Recipients property, melyen keresztül egy listát kapunk az e-mail címzettjeiről. A Recipients.Count property-ből kiolvasható, hogy a levélnek hány címzettje van. Az Item függvényen keresztül lekérdezhetők az egyes címzettek, paraméterként megadva a címzett indexét. A függvény visszatérési értéke egy Recipient objektum, amiből kiolvashatók a címzett adatai.
A SentOn property visszaadja a levél elküldésének dátumát és időpontját.
Ha a levél még nem lett megnyitva (elolvasva), akkor az UnRead property értéke igaz, ellenkező esetben hamis.
A UserProperties objetumot használhatjuk arra, hogy a levél egyéni tulajdonságait lekérdezzük. Ez egy lista, hasonlóan a Recpients property-hez, amiből UserProperty típusú objektumokat tudunk elérni. Hogy pontosan miről is van szó, jobban megértjük, ha megnézzük, hogy az Outlook-ból ez hogyan történik. A lista fejlécén kattintsunk a jobb egérgombbal, majd válasszuk a "Jelenlegi megjelenítés testreszabása..." menüpontot. Kattintsunk a "Mezők" gombra, és a megjelenő ablakban láthatjuk, hogy milyen adatokat érhetünk el (mezők) a UserProperties objektumon keresztül. Egy MailItem objektumnál ez a property csak olvasható, új tulajdonságokat nem hozhatunk létre.
Ha egy MailItem objektumról másolatot szeretnénk készíteni, akkor használjuk a Copy függvényt. A függvény az összes Outlook elemnél használható, nem csak a MailItem-nél. Jól használható a Move függvénnyel együtt arra, hogy a levelekről másolatot készítsünk egy másik mappában. A Move függvény a levelet "átmozgatja" a megadott mappába, és az eredeti helyéről törli azt.
A PrintOut metódussal kinyomtathatjuk a levelet, az alapbeállításokat használva.
Ha már nincs szükségünk a levélre, akkor a Delete függvénnyel törölhetjük azt.
A Reply függvény akkor használható ki, amikor egy levélre válaszolni akarunk. A függvény visszatérési értéke ugyanis egy olyan MailItem objektum, aminek címzettjéhez beírja az eredeti levél küldőjének címét.
  MailItem mi2 =  mi.Reply;
  mi2.Body = „Megkaptam!”;
  mi2.Send;

Outlook programozása cikksorozat