• 19 Nisan 2024 02:49

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

C# ile Exchange Server Üzerinden Takvim Verilerinin Çekilmesi

BySait ORHAN

Nis 1, 2016

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;
    }

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.