
- Microsoft Graph Sunumu
- Aspose.Email for .NET Kütüphanesi Hakkında
- Uygulamanızı Azure Portalında Yapılandırın
- Erişim Jetonu Alın ve GraphClient’i Başlatın
- Bir Klasör Hiyerarşisini Alın ve Klasörleri İsimle Alın
- Belirtilen Klasördeki Mesajları Listele
Microsoft Graph API ve Aspose.Email for .NET kütüphanesinin bir e-posta uygulaması ile entegrasyonu, geliştiricilerin posta kutusu verilerine kolayca erişim sağlamasına ve manipüle etmesine, mesajları alma, klasör hiyerarşilerini alma ve e-postaları farklı formatlarda kaydetme gibi işlemler gerçekleştirmesine olanak tanır. Bu makalede, bu güçlü kombinasyonu kullanarak posta kutularını nasıl işleyip yöneteceğimizi keşfedeceğiz.
Microsoft Graph Sunumu
Microsoft Graph, kullanıcı verilerine ve Microsoft bulut ekosistemindeki içgörülere kesintisiz bir şekilde erişim sağlamak için geniş bir API platformudur. Microsoft 365’teki e-posta kutuları, takvimler, kişiler, OneDrive, Teams ve daha fazlası gibi çeşitli Microsoft hizmetlerine ve verilere erişim için tek bir uç nokta sunar.
Microsoft Graph ile geliştiriciler, kullanıcı verileri ve içgörüleri ile etkileşimde bulunan uygulamalar oluşturabilir. Bu, verileri kolayca kimlik doğrulama, yetkilendirme ve sorgulama olanağı sağlayan RESTful API’ler ve SDK’lar aracılığıyla gerçekleştirilir.
Aspose.Email for .NET Kütüphanesi Hakkında
Aspose.Email for .NET, geliştiricilerin .NET uygulamalarında e-posta dosyaları ve protokolleriyle çalışmasını sağlayan zengin özelliklere sahip bir kütüphanedir. MSG, EML ve MBOX gibi çeşitli formatlarda e-posta mesajları oluşturma, manipüle etme ve dönüştürme için sağlam bir API seti sunar. Ayrıca, kütüphane SMTP, POP3 ve IMAP gibi e-posta protokollerini destekleyerek çok yönlü bir e-posta yönetimi sağlar.
Bu kılavuzda, Microsoft Graph ile etkileşimde bulunmak için Aspose.Email’i kullanacağız ve posta kutusu verilerini programlı bir şekilde işleyeceğiz. Aspose.Email’den GraphClient ile, Microsoft Graph ile kimlik doğrulaması yaparak posta kutusu işlemlerini verimli bir şekilde gerçekleştirebiliriz.
Kütüphaneyi kullanmaya başlamak için, projeye entegre etmeniz gerekiyor. Aspose.Email for .NET’i elde etmenin en kolay yolu NuGet Paket Yöneticisi aracılığıyla:
- Projenizi Visual Studio’da açın.
- Araçlar > NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet’e gidin.
- Aspose.Email için arama yapın.
- Paketi seçin ve Yükle butonuna tıklayın.
Alternatif olarak, Paket Yöneticisi Konsolunu kullanabilirsiniz:
Install-Package Aspose.Email
Ayrıca, API’nin en son sürümünü doğrudan Aspose web sitesinden indirin.
Uygulamanızı Azure Portalında Yapılandırın
Koda girmeden önce, Microsoft Graph erişimini etkinleştirmek için uygulamanızı Azure portalında yapılandırmak kritik öneme sahiptir. Aşağıdaki adımları takip edin:
Bir Azure Active Directory (AAD) Uygulaması Oluşturun:
- Azure Portal adresine gidin.
- Azure Active Directory > Uygulama kayıtları bölümüne gidin.
- Yeni bir uygulama oluşturmak için Yeni kayıt butonuna tıklayın.
- Bir isim verin ve gerekirse yönlendirme URI’sini ayarlayın.
- İşlemi tamamlamak için Kaydet butonuna tıklayın.
API İzinlerini Ayarlayın:
- Kayıtlı uygulamanızda, API izinleri bölümüne gidin.
- Bir izin ekle > Microsoft Graph seçeneğine tıklayın.
- Sunucu ile sunucu arası çağrılar için Uygulama izinlerini seçin.
Mail.Read
,Mail.ReadWrite
,User.Read
gibi gerekli izinleri seçin.- Uygulamak için İzinleri ekle butonuna tıklayın.
Bir İstemci Sırrı Oluşturun:
- Uygulamanızda Sertifikalar ve gizli anahtarlar bölümüne gidin.
- Yeni istemci sırrı butonuna tıklayın ve bir açıklama verin.
- Bir sona erme süresi ayarlayın, ardından Ekle butonuna tıklayın.
- Oluşturulan istemci sırrı değerini not edin, çünkü daha sonra ihtiyaç duyacaksınız.
Yapılandırma Değerlerini Toplayın:
- Uygulamanızın genel bakış sayfasından ve gizli anahtarlar bölümünden Kiracı Kimliği, İstemci Kimliği ve İstemci Sırrını alın.
- Bu değerleri Microsoft Graph ile kimlik doğrulamak ve etkileşimde bulunmak için kullanacaksınız.
Uygulamanız yapılandırıldıktan sonra, gelişim görevlerine devam etmeye hazırsınız.
Erişim Jetonu Alın ve GraphClient’i Başlatın
Posta kutusu işlemlerine dalmadan önce, Microsoft Graph’ın geniş veri ve hizmet ekosisteminin kapısını açmamız gerekiyor. Bu erişim, bir OAuth 2.0 erişim jetonu ile sağlanır - bu, uygulamanızın bir kullanıcı veya hizmet adına Microsoft Graph ile etkileşimde bulunmasını yetkilendiren dijital bir anahtardır. Bunu, e-postaları çekmekten kişileri yönetmeye ve daha fazlasına kadar, tüm olasılıkların bir evrenine giriş izni veren güvenli bir geçiş belgesi olarak düşünebilirsiniz.
Adım 1: Bir Yapılandırma Dosyası Ayarlayın
Jetonu almak için ilk adım, uygulamanızın Kiracı Kimliği, İstemci Kimliği ve İstemci Sırrı gibi temel bilgileri depolayan bir yapılandırma dosyası ayarlamaktır. Bu değerler, uygulamanızın kimlik bilgileri olup, Microsoft sunucuları ile iletişim kurarken tanıtıcı olarak işlev görmektedir.
JSON yapılandırmanız şu şekilde olabilir:
{
"Instance": "https://login.microsoftonline.com/{0}",
"ApiUrl": "https://graph.microsoft.com/.default",
"TenantId": "YOUR_TENANT_ID_HERE",
"ClientId": "YOUR_APP_ID_HERE",
"ClientSecret": "YOUR_CLIENT_SECRET_HERE",
"UserId": "YOUR_ID_HERE"
}
Adım 2: JSON Yapılandırmasını C# Nesnesine Haritalayın
Şimdi, bu yapılandırmayı uygulamanın kullanabileceği bir C# nesnesine dönüştürelim. JSON dosyasını okuyacağız ve içeriğini AuthenticationConfig
sınıfına haritalayarak, uygulamanızın ihtiyaç duyduğu kritik bilgileri nerede bulacağını bilmesini sağlayacağız.
class AuthenticationConfig
{
public string Instance { get; set; }
public string ApiUrl { get; set; }
public string TenantId { get; set; }
public string ClientId { get; set; }
public string UserId { get; set; }
public string Authority => string.Format(CultureInfo.InvariantCulture, Instance, TenantId);
public string ClientSecret { get; set; }
public static AuthenticationConfig ReadFromJsonFile(string path)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path);
var configuration = builder.Build();
return configuration.Get<AuthenticationConfig>();
}
}
Adım 3: Erişim Jetonu Alın
Yapılandırmamız hazır olduğuna göre, erişim jetonunu almaya geçebiliriz. Microsoft Authentication Library (MSAL) kullanarak kimlik doğrulama sürecini yöneten bir GraphTokenProvider
sınıfı uygulayacağız. Bu sınıf, Microsoft Graph ile iletişim kurarak uygulamamızı güçlendiren jetonu almak için gerekli işlemleri gerçekleştirir.
class GraphTokenProvider : ITokenProvider
{
private readonly IConfidentialClientApplication _app;
private readonly string[] _scopes;
private string? _token;
public GraphTokenProvider(AuthenticationConfig config)
{
_app = ConfidentialClientApplicationBuilder.Create(config.ClientId)
.WithClientSecret(config.ClientSecret)
.WithAuthority(config.Authority)
.Build();
// Hafızada jeton önbellekleri (Uygulama ve Kullanıcı önbellekleri)
_app.AddInMemoryTokenCache();
_scopes = new[] { config.ApiUrl };
}
public void Dispose()
{
throw new NotImplementedException();
}
public OAuthToken GetAccessToken()
{
return GetAccessToken(false);
}
public OAuthToken GetAccessToken(bool ignoreExistingToken)
{
if (!ignoreExistingToken && _token != null)
{
return new OAuthToken(_token);
}
_token = GetAccessTokenAsync().GetAwaiter().GetResult();
return new OAuthToken(_token);
}
private async Task<string?> GetAccessTokenAsync()
{
AuthenticationResult? result;
try
{
result = await _app.AcquireTokenForClient(_scopes)
.ExecuteAsync();
Console.WriteLine($"Jeton {result.AuthenticationResultMetadata.TokenSource} kaynağından alındı {Environment.NewLine}");
}
catch (MsalServiceException ex)
{
Console.WriteLine($"Jeton Alma Hatası:{Environment.NewLine}{ex}{Environment.NewLine}");
result = null;
}
if (result == null) return null;
_token = result.AccessToken;
return result.AccessToken;
}
}
Adım 4: GraphClient’i Başlatın
Son olarak, aldığımız jeton ile GraphClient‘i başlatıyoruz. GraphClient
, Microsoft Graph ile etkileşimde bulunmamızı sağlayan köprümüzdür ve kullanıcı posta kutularıyla kesintisiz bir şekilde etkileşimde bulunmamıza olanak tanır.
var config = AuthenticationConfig.ReadFromJsonFile("appsettings.json");
var tokenProvider = new GraphTokenProvider(config);
using var client = GraphClient.GetClient(tokenProvider, config.TenantId);
client.Resource = ResourceType.Users;
client.ResourceId = config.UserId;
Bir Klasör Hiyerarşisini Alın ve Klasörleri İsimle Alın
Microsoft Graph’a erişiminizi sağladıktan sonra, posta kutusunun hiyerarşisini keşfetmeye başlayabilirsiniz. Bu bölümde, bir posta kutusunun klasör hiyerarşisini almayı ve belirli klasörlere isimleriyle erişmeyi inceleyeceğiz.
Adım 1: Klasör Hiyerarşisini Anlamak
Klasör Yapısında Gezinme
Posta kutuları, bir ağaç yapısı gibi hiyerarşik bir şekilde düzenlenmiştir. Kök klasör, bir dizi alt klasöre dallanır ve her biri kendi e-posta setini ve potansiyel olarak daha fazla alt klasör içerir. Bu iç içe geçmiş yapı, e-postaların düzenli bir şekilde yönetilmesi ve kolayca gezilmesi için olanak tanır.
Klasör hiyerarşisindeki her klasörü temsil etmek için FolderNode
sınıfını tanımlayalım ve kullanalım:
// Klasör hiyerarşisinde bir düğümü temsil eder,
// FolderInfo özelliklerini genişletir ve bir dizi alt klasör saklar.
class FolderNode
{
// Klasör bilgilerini temsil eden FolderInfo nesnesini alır.
public FolderInfo Folder { get; }
// Mevcut klasörde bulunan alt klasörlerin koleksiyonunu alır.
public List<FolderNode?> SubFolders { get; }
// Belirtilen FolderInfo nesnesi ile FolderNode sınıfının yeni bir örneğini başlatır.
public FolderNode(FolderInfo folder)
{
Folder = folder;
SubFolders = new List<FolderNode?>();
}
// Mevcut düğümden başlayarak tüm klasörleri hiyerarşik bir şekilde yazdırır.
public void PrintHierarchy()
{
PrintFolderNode(this, 0);
}
private void PrintFolderNode(FolderNode node, int indentLevel)
{
// Mevcut klasör düğümünü girinti ile yazdır
Console.WriteLine($"{new string(' ', indentLevel * 2)}{node}");
// Alt klasörleri yinelemeli olarak yazdır
foreach (var subFolder in node.SubFolders)
{
PrintFolderNode(subFolder, indentLevel + 1);
}
}
// Klasörün Görüntüleme Adını alır.
public override string ToString()
{
return $"{Folder.DisplayName} ({Folder.ContentCount})";
}
}
Kapsamlı klasör hiyerarşisini almak için FolderHierarchy
sınıfını oluşturacağız; bu sınıf, tüm klasörleri yinelemeli olarak listelemek için GraphClient
kullanır. İşte nasıl çalıştığı:
static class FolderHierarchy
{
// Posta kutusundaki tüm klasörleri yinelemeli olarak alır ve FolderNode nesnelerinin hiyerarşik bir koleksiyonunu döndürür.
public static List<FolderNode> Retrieve(IGraphClient client)
{
// Kök klasörleri al
var rootFolders = client.ListFolders();
var allFolders = new List<FolderNode>();
// Alt klasörleri yinelemeli olarak al
foreach (var folder in rootFolders)
{
var folderNode = new FolderNode(folder);
RetrieveSubFolders(client, folderNode);
allFolders.Add(folderNode);
}
return allFolders;
}
// Alt klasörleri yinelemeli olarak alır ve bunları ana FolderNode'un SubFolders özelliğine ekler.
private static void RetrieveSubFolders(IGraphClient client, FolderNode parentFolderNode)
{
if (parentFolderNode.Folder.HasSubFolders)
{
var subFolders = client.ListFolders(parentFolderNode.Folder.ItemId);
foreach (var subFolder in subFolders)
{
var subFolderNode = new FolderNode(subFolder);
RetrieveSubFolders(client, subFolderNode);
parentFolderNode.SubFolders.Add(subFolderNode);
}
}
}
}
Adım 2: Klasör Hiyerarşisini Alın
FolderHierarchy.Retrieve
yöntemini kullanarak, posta kutusunun klasör yapısını zahmetsizce keşfedebilirsiniz. İşte bunu nasıl başarabileceğiniz:
// Posta kutusundan klasör hiyerarşisini al
var folderNodes = FolderHierarchy.Retrieve(client);
// Klasör hiyerarşisini yapısal bir formatla yazdır
foreach (var folderNode in folderNodes)
{
folderNode.PrintHierarchy();
}
Adım 3: Klasörleri İsimle Alın
Klasör hiyerarşisi alındıktan sonra, belirli klasörleri isimleriyle bulabilirsiniz. İster Gelen Kutusu’na erişmek isteyin, ister herhangi bir özel klasörü, bu yöntem, onları hızlı bir şekilde bulmanızı sağlar:
// Aradığınız klasör adını belirtin
string targetFolderName = "Gelen Kutusu";
// Hedef klasörü isimle bul
var targetFolder = folderNodes.FirstOrDefault(
folderNode => folderNode.Folder.DisplayName.Equals(targetFolderName, StringComparison.OrdinalIgnoreCase))
?.Folder;
Belirtilen Klasördeki Mesajları Listele
Klasör hiyerarşisini başarıyla aldığımızda, bir klasördeki içeriklere dalmanın zamanı geldi. Gelen Kutunuzu ziyaret ettiğinizi düşünün; şimdi, içindeki tüm mesajları görmek istiyorsunuz.
Bu bölümde, belirli bir klasördeki mesajları nasıl listeleyeceğimizi keşfedeceğiz. GraphClient ve Aspose.Email for .NET kullanarak mesajları listeleyeceğiz.
Hedef klasörü aldıktan sonra, içindeki mesajları listelemek oldukça basittir. GraphClient
, bir klasördeki tüm mesajları almak için ListMessages yöntemini sağlar; bu mesajları daha sonra işleyebilir veya görüntüleyebilirsiniz.
Belirtilen klasörden mesajları listelemek için kod işte şöyle:
Console.WriteLine("Belirtilen klasördeki mesajlar listeleniyor...");
// Seçilen klasördeki mesajları listelemek için istemci yöntemini çağır
var messageInfoCollection = client.ListMessages(targetFolder.ItemId);
Console.WriteLine($"{targetFolderName}:");
// Mesajların konu başlıklarını yazdır
foreach (var messageInfo in messageInfoCollection)
{
Console.WriteLine($" - {messageInfo.Subject}");
}
messageInfoCollection, her e-posta hakkında temel bilgileri içerir. Bu bilgiler, özetler görüntülemek, raporlar oluşturmak veya belirli kriterlere dayalı olarak uyarılar tetiklemek için kullanılabilir.
Sonuç
Bu makalede, Microsoft Graph ve Aspose.Email for .NET kütüphanesinin gücünü kullanarak posta kutularını etkili bir şekilde nasıl işleyebileceğimizi, klasör hiyerarşilerini nasıl gezebileceğimizi ve belirli klasörlerdeki mesajları nasıl listeleyebileceğimizi keşfettik. Bu adımları takip ederek, e-posta verileriyle kesintisiz bir şekilde etkileşimde bulunan sağlam uygulamalar geliştirebilirsiniz.
Kavramları Eyleme Geçirme
Bu kavramların eyleme geçtiğini görmek isterseniz, çalışır durumda bir uygulamanın tam işlevsel örneğini indirebilirsiniz. Bu uygulama, bu makalede açıklanan kaynak kodunu içerir ve bu özellikleri adım adım nasıl uygulayacağınızı gösterir.
Örnek uygulamaya erişmek için GitHub deposumuzu ziyaret edin: Aspose.Email for .NET - GraphApp Örneği.
Microsoft Graph aracılığıyla posta kutularını işlemek, e-posta verilerine ve yönetim yeteneklerine benzersiz erişim sağlar. Doğru araçlar ve tekniklerle, anlamlı içgörüler sağlayan ve karmaşık görevleri otomatikleştiren sofistike uygulamalar geliştirebilirsiniz, bu da nihayetinde verimliliği ve kullanıcı memnuniyetini artırır.
Ücretsiz Deneyin
Ayrıca, Aspose.Email kapsamlı belgeler, geniş bir API referansı ve geliştirme sürecinizi geliştirmek için çeşitli ücretsiz çevrimiçi araçlar ve uygulamalar sunar. Geliştiriciler ayrıca topluluk yardımı ve içgörüleri için ücretsiz bir destek forumuna erişebilir ve Aspose blogu aracılığıyla en son ipuçları ve eğitimler hakkında güncel kalabilirler.