Exchange Server Üzerinden Takvim Verilerinin Çekilmesi

Uzun bir aradan sonra tekrar yazmaya başlamanın heyecanıyla yeni yazımıza başlıyoruz, yazımızın konusu Exchange Server üzerinde bulunan takvim verilerinin C# ile çekilmesidir.

Programı yazmaya başlamadan önce Exchange Web Services (EWS) kütüphanesini projemize eklememiz gerekmektedir.

Kod dosyamızın isim uzayları tanımları şöyledir,


using System;
using System.Collections.Generic;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Windows.Forms;
using Microsoft.Exchange.WebServices.Data;

Server ile bağlantı kurulurken kullanılıyorsa SSL sertifika hatası almamak için aşağıdaki kodu sunucuya bağlanmadan önce çalıştırmak gerekmektedir.


System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

Exchange Server ile bağlantıyı oluşturacak olan metodumuzun kodu,


public ExchangeService GetBinding()
{
// Create the binding.
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
service.Url = new Uri("https://{Exchange Server Adresi}/EWS/Exchange.asmx", UriKind.Absolute);
// Define credentials.
service.Credentials = new WebCredentials("kullanıcı_adı", "Şifre", "domain");
return service;
}

Server üzerinden takvim etkinliklerini çekecek olan metodumuzun kodu,


void GetCalendarItems(ExchangeService service)
{
int CalendarItems = 0;
 
// Bir arama kriteri ekliyoruz. Örnek kriterde başlama tarihi: 1.7.2015'ten büyük olanlar getiriliyor
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
searchFilterCollection.Add(new SearchFilter.IsGreaterThan(AppointmentSchema.Start, new DateTime(2015, 7, 1)));
 
// Arama filtresi oluşturuluyor
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
 
// 50 sayfalık bir etkinlik görüntüsü oluşturuluyor
ItemView view = new ItemView(50);
 
// alınacak veriler seçiliyor
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start);
 
// Etkinlikler başlama tarihlerine göre artan sırada sıralanıyor
view.OrderBy.Add(AppointmentSchema.Start, SortDirection.Descending);
view.Traversal = ItemTraversal.Shallow;
 
// sonuçlar sorgulanıyor.
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Calendar, searchFilter, view);
 
//Dönen sonuçlar işleme alınıyor
dataGridView1.DataSource = findResults.Items;
}

 

Yorum Yapın

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d blogcu bunu beğendi: