• 27 Eylül 2020 23: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 cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.