![]() | |
C# ile Outlook Üzerinde Contact İşlemleri | 25.08.2009 16:50:00 |
| Kategori : C# & VB.Net Özet : Visual Studio ve Outlook interop'u sayesinde Outlook'ta kullandığımız nesnelere kendi yazdığımız uygulamalarımızdan da erişebiliyoruz. Bu sayede ister Outlook'a add-in yazma ister Outlook'dan veri alan veya Outlook'a veri gönderen Windows uygulaması yazma işi oldukça kolaylaşıyor. Ben bu makalemde Visual Studio ile C#'da Outlook Interop'u kullanarak Outlook'daki kontak bilgilerine erişme, yeni kontak ekleme, silme gibi işlemleri kendi uygulamalarımızda nasıl yapabileceğimizden bahsedeceğim. Makaleyi okudukça ve kendiniz de örnek bir uygulama yazınca siz de göreceksiniz, makaledeki bilgilerle sadece kontak işlemleri değil, Outlook'da bulunan ve çoğumuzun kullandığı Appointment, Note, Task ve tabii ki Mail işlemlerini de yapabiliyoruz. | |
| Visual Studio ve Outlook interop'u sayesinde Outlook'ta kullandığımız nesnelere kendi yazdığımız uygulamalarımızdan da erişebiliyoruz. Bu sayede ister Outlook'a add-in yazma ister Outlook'dan veri alan veya Outlook'a veri gönderen Windows uygulaması yazma işi oldukça kolaylaşıyor. Ben bu makalemde Visual Studio ile C#'da Outlook Interop'u kullanarak Outlook'daki kontak bilgilerine erişme, yeni kontak ekleme, silme gibi işlemleri kendi uygulamalarımızda nasıl yapabileceğimizden bahsedeceğim. Makaleyi okudukça ve kendiniz de örnek bir uygulama yazınca siz de göreceksiniz, makaledeki bilgilerle sadece kontak işlemleri değil, Outlook'da bulunan ve çoğumuzun kullandığı Appointment, Note, Task ve tabii ki Mail işlemlerini de yapabiliyoruz. Benim makalemde yazacağım örnek uygulama Outlook add-in'i değil, daha basit bir Windows uygulaması olacak. İlk olarak yeni bir proje oluşturalım ve Microsoft.Office.Interop.Outlook referansını projemize ekleyelim:
Ardından koda aşağıdaki using ifadesini yazalım:
using Microsoft.Office.Interop.Outlook; Şimdi ilk iş Outlook'da yeni bir kontak ekleme işlemini yapalım. Formu aşağıdaki gibi dizayn edelim:
Bildiğiniz gibi Outlook'da bir kontağın oldukça fazla bilgisini tutabiliyoruz (yaklaşık 150 adet alan var). Biz uygulamamızda kontak kaydetme işlemini yaparken ad, soyad, e-mail adresi, görev, cinsiyet, doğumgünü, kategori, hobi, son ek, ünvan, tam ad, önem derecesi, resim bilgilerini kaydedeceğiz. Formu dizayn edip koda geçtikten sonra ilk olarak uygulamamızda kullanacağımız üç nesneyi oluşturalım:
public Form1()
InitializeComponent();
Microsoft.Office.Interop.Outlook.Application
insApplication = new
Microsoft.Office.Interop.Outlook.Application();
private void
Form1_Load(object sender,
EventArgs e)
Formda class level Application, NameSpace ve MAPIFolder nesnelerini tanımladık. Kontaklar ile ilgili işlemleri yapabilmek için NameSpace nesnesinin GelDefaultFolder metoduna Outlook folder'larından Contacts'ı parametre olarak geçiriyoruz. OlDefaultFolders enum'u Calendar, Inbox, Junk Mail, Deleted Items, Sent Items, Tasks, Outbox gibi Outlook folder'larını taşır. MAPI namespace nesnesini ise Application nesnesinin GetNamespace metoduna "MAPI" keyword'ünü geçirerek oluşturduk. Formun load'ında yazdığımız son iki satır kodda ise Importance ve Gender combobox'larına OlImportance ve OlGender enum'larını datasource olarak verdik. Uygulamayı çalıştırdığımızda Importance combobox'ında Low, Normal ve High; Gender combobox'ında ise Unspecified, Female ve Male item'larını göreceğiz. Şimdi de Insert New Outlook Contact butonunun click event'ine insert kodumuzu yazalım:
private void
btnInsertContact_Click(object sender,
EventArgs e)
ContactItem insContactItem =
(Microsoft.Office.Interop.Outlook.ContactItem)insContactsFolder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olContactItem);
//ONEMLI!: veya asagidaki gibi Application
nesnesinin CreateItem metodu da kullanilabilir:
insContactItem.FirstName = txtFirstName.Text;
private void btnUploadPicture_Click(object sender,
EventArgs e) Kodda ilk olarak bir ContactItem nesnesi oluşturduk. Bu nesneyi oluştururken instance'ını aldığımız MAPIFolder nesnesinin (insContactsFolder) Items.Add metodunu kullandık. Fakat aynı işlemi instance'ını aldığımız Application nesnesinin (insApplication) CreateItem metodunu kullanarak da yapabilirdik. ContactItem nesnesini oluşturduktan sonra formdaki alanları teker teker nesnenin property'lerine atadık. Kontağa resim eklemek içinse ContactItem nesnesinin AddPicture metodunu çağırdık ve parametre olarak resmin yolunu verdik. Son olarak da Save metodunu çağırdık. Şimdi uygulamayı çalıştırıp yeni bir kontak ekleyelim.
Kaydettikten sonra Outlook'ta contacts ekranında yeni eklediğimiz kontağımızı görebiliriz:
Şimdi de uygulama ekranındaki ikinci tab'da silme, listeleme gibi bazı işlemleri yapalım. Önce formu aşağıdaki gibi dizayn edelim:
Görüldüğü gibi bu ekranda kontakları listeleme, kopyalama, silme, kontak resmini silme, kontağı Business Card Editor'de gösterme ve Categories ekranını gösterme işlemlerini yapacağız. İlk olarak kontakları listview'de listeleyen butonun kodunu yazalım:
private void
ListContacts()
void btnListContacts_Click(object sender,
EventArgs e)
ContactItem GetSelectedContact(string
parFullName)
private void
btnCopyContact_Click(object sender,
EventArgs e)
private void
btnDeleteContact_Click(object sender,
EventArgs e) Kalan işlemleri yapmak için listview'de seçili ContactItem'ı almak gerekiyor. Bunun için de GetSelectedContact fonksiyonunu yazdık. Listview'da seçili olan item'ın text'i kontağın FullName property'sindeki değer olduğu için insContactsFolder nesnesinin item'ları arasından FullName property'sinin değerine göre select işlemi yaptık ve fonksiyona ContactItem nesnesini döndürttük. Ardından kopyalama işlemi için ContactItem nesnesinin Copy, silme işlemi için Delete, resmi silme işlemi için RemovePicture metodunu kullandık. Ancak önemli bir nokta: RemovePicture metodunu çağırdıktan sonra değişiklikleri kaydetmek için Save metodunu da çağırdık. Business Card Editor ekranını açmak için yine ContactItem nesnesinin ShowBusinessCardEditor metodunu çağırdık. Bu butona tıkladığımızda listview'de seçili kontak aşağıdaki gibi görüntülenecektir:
void UpdateContact()
Işıl Orhanel
| |
Yazgelistir.com | |