
- Prezentace Microsoft Graph
- O knihovně Aspose.Email pro .NET
- Konfigurace vaší aplikace na Azure Portalu
- Získání přístupového tokenu a inicializace GraphClient
- Získání hierarchie složek a získání složek podle názvu
- Seznam zpráv ve specifikované složce
Integrace Microsoft Graph API a knihovny Aspose.Email pro .NET s e-mailovou aplikací umožňuje vývojářům snadno přistupovat a manipulovat s daty poštovních schránek, provádět operace jako vyhledávání zpráv, získávání hierarchií složek a ukládání e-mailů v různých formátech. V tomto článku prozkoumáme, jak využít tuto mocnou kombinaci při zpracování a správě poštovních schránek.
Prezentace Microsoft Graph
Microsoft Graph je komplexní platforma API poskytovaná společností Microsoft, která nabízí jednotný koncový bod pro přístup k široké škále služeb a dat Microsoftu. Slouží jako brána k rozsáhlým datům dostupným v Microsoft 365, včetně poštovních schránek Outlook, kalendářů, kontaktů, OneDrive, Teams a další.
S Microsoft Graph mohou vývojáři vytvářet aplikace, které bezproblémově interagují s uživatelskými daty a poznatky napříč cloudovým ekosystémem Microsoft. Toho je dosaženo prostřednictvím RESTful API a SDK, které poskytují prostředky k autentizaci, autorizaci a dotazování na data s lehkostí.
O knihovně Aspose.Email pro .NET
Aspose.Email pro .NET je bohatá knihovna, která umožňuje vývojářům pracovat s e-mailovými soubory a protokoly ve svých aplikacích .NET. Poskytuje robustní sadu API pro vytváření, manipulaci a převod e-mailových zpráv v různých formátech, jako jsou MSG, EML a MBOX. Kromě toho knihovna podporuje e-mailové protokoly jako SMTP, POP3 a IMAP, což umožňuje všestrannou správu e-mailů.
V této příručce použijeme Aspose.Email k interakci s Microsoft Graph, programově zpracovávajícími data poštovních schránek. S GraphClient od Aspose.Email můžeme efektivně provádět operace s poštovními schránkami autentizací s Microsoft Graph.
Chcete-li začít využívat knihovnu, musíte ji integrovat do svého projektu. Nejjednodušší způsob, jak získat Aspose.Email pro .NET, je prostřednictvím správce balíčků NuGet:
- Otevřete svůj projekt ve Visual Studio.
- Přejděte na Nástroje > Správce balíčků NuGet > Spravovat balíčky NuGet pro řešení.
- Hledejte Aspose.Email.
- Vyberte balíček a klikněte na Instalovat.
Alternativně můžete použít konzolu pro správce balíčků:
Install-Package Aspose.Email
Také si můžete stáhnout nejnovější verzi API přímo z webu Aspose webu.
Konfigurace vaší aplikace na Azure Portalu
Než se pustíme do kódu, je nezbytné nakonfigurovat vaši aplikaci v Azure portálu pro povolení přístupu k Microsoft Graph. Stačí se řídit těmito kroky:
Vytvoření aplikace Azure Active Directory (AAD):
- Přejděte na Azure Portal.
- Přejděte na Azure Active Directory > Registrace aplikací.
- Klikněte na Nová registrace pro vytvoření nové aplikace.
- Zadejte název a nastavte URI pro přesměrování, pokud je to potřeba.
- Klikněte na Registrovat, abyste dokončili proces.
Nastavení oprávnění API:
- Ve vaší registrované aplikaci přejděte na Oprávnění API.
- Klikněte na Přidat oprávnění > Microsoft Graph.
- Vyberte Oprávnění aplikace pro serverové volání.
- Zvolte potřebná oprávnění jako
Mail.Read
,Mail.ReadWrite
,User.Read
atd. - Klikněte na Přidat oprávnění, abyste je použili.
Vytvoření tajného klíče klienta:
- Přejděte na Certifikáty a tajné klíče ve vaší aplikaci.
- Klikněte na Nový tajný klíč klienta a zadejte popis.
- Nastavte dobu platnosti, poté klikněte na Přidat.
- Poznamenejte si vygenerovanou hodnotu tajného klíče klienta, protože ji budete potřebovat později.
Shromáždění konfiguračních hodnot:
- Získejte ID nájemce, ID klienta a Tajný klíč klienta z přehledové stránky vaší aplikace a sekce s tajným klíčem.
- Tyto hodnoty použijete k autentizaci a interakci s Microsoft Graph.
Jakmile je vaše aplikace nakonfigurována, jste připraveni pokračovat v vývojových úlohách.
Získání přístupového tokenu a inicializace GraphClient
Než se pustíme do operací s poštovními schránkami, musíme odemknout dveře do rozsáhlého ekosystému dat a služeb Microsoft Graph. Tento přístup je povolen prostřednictvím přístupového tokenu OAuth 2.0 - digitálního klíče, který autorizuje vaši aplikaci k interakci s Microsoft Graph jménem uživatele nebo služby. Představte si to jako zabezpečený průkaz, který vám umožní vstoupit do celého vesmíru možností, od získávání e-mailů po správu kontaktů a další.
Krok 1: Nastavení konfiguračního souboru
Prvním krokem k získání tokenu je nastavení konfiguračního souboru, který ukládá základní údaje, jako je ID nájemce, ID klienta a Tajný klíč klienta vaší aplikace. Tyto hodnoty jsou přihlašovací údaje vaší aplikace a fungují jako identifikátory při komunikaci se servery Microsoftu.
Zde je, jak by mohl váš JSON konfigurační soubor vypadat:
{
"Instance": "https://login.microsoftonline.com/{0}",
"ApiUrl": "https://graph.microsoft.com/.default",
"TenantId": "VLOŽTE_ID_NÁJEMCE_TADY",
"ClientId": "VLOŽTE_ID_APLIKACE_TADY",
"ClientSecret": "VLOŽTE_TAJNÝ_KLÍČ_KLIENTA_TADY",
"UserId": "VLOŽTE_ID_TADY"
}
Krok 2: Mapování JSON konfigurace na C# objekt
Nyní převedeme tuto konfiguraci na C# objekt, který naše aplikace může používat. Přečteme JSON soubor a mapujeme jeho obsah na třídu AuthenticationConfig
, čímž zajistíme, že naše aplikace ví, kde najít důležité informace, které potřebuje.
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>();
}
}
Krok 3: Získání přístupového tokenu
S naší konfigurací na místě je čas získat přístupový token. Implementujeme třídu GraphTokenProvider
, která zpracovává proces autentizace pomocí Microsoft Authentication Library (MSAL). Tato třída se postará o těžkou práci - komunikaci s Microsoft Graph za účelem získání tokenu, který posiluje naši aplikaci.
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();
// In-memory token caches (App and User caches)
_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($"Token získaný z {result.AuthenticationResultMetadata.TokenSource} {Environment.NewLine}");
}
catch (MsalServiceException ex)
{
Console.WriteLine($"Chyba při získávání tokenu:{Environment.NewLine}{ex}{Environment.NewLine}");
result = null;
}
if (result == null) return null;
_token = result.AccessToken;
return result.AccessToken;
}
}
Krok 4: Inicializace GraphClient
Nakonec inicializujeme GraphClient pomocí tokenu, který jsme získali. GraphClient
funguje jako náš most k Microsoft Graph, což nám umožňuje bezproblémově interagovat s uživatelskými poštovními schránkami.
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;
Získání hierarchie složek a získání složek podle názvu
Jakmile máte přístup k Microsoft Graph, je čas se pustit do prozkoumání poštovní schránky. V této části se zaměříme na získání a navigaci hierarchií složek poštovní schránky, což vám umožní přistupovat k konkrétním složkám podle názvu.
Krok 1: Porozumění hierarchii složek
Navigace ve struktuře složek
Poštovní schránky jsou strukturovány hierarchicky, podobně jako strom. Kořenová složka se větví do několika podložek, z nichž každá obsahuje svůj vlastní soubor e-mailů a potenciálně další podložky. Tato vnořená struktura umožňuje organizované řízení a snadnou navigaci e-mailů.
Definujme a použijme třídu FolderNode
, která představuje každou složku v hierarchii:
// Reprezentuje uzel v hierarchii složek,
// rozšiřuje vlastnosti FolderInfo a ukládá kolekci podložek.
class FolderNode
{
// Získává objekt FolderInfo představující informace o složce.
public FolderInfo Folder { get; }
// Získává kolekci podložek obsažených v aktuální složce.
public List<FolderNode?> SubFolders { get; }
// Inicializuje novou instanci třídy FolderNode se zadaným objektem FolderInfo.
public FolderNode(FolderInfo folder)
{
Folder = folder;
SubFolders = new List<FolderNode?>();
}
// Tiskne všechny složky hierarchickým způsobem, počínaje aktuálním uzlem.
public void PrintHierarchy()
{
PrintFolderNode(this, 0);
}
private void PrintFolderNode(FolderNode node, int indentLevel)
{
// Tisk aktuálního uzlu složky s odsazením
Console.WriteLine($"{new string(' ', indentLevel * 2)}{node}");
// Rekurzivní tisk podložek
foreach (var subFolder in node.SubFolders)
{
PrintFolderNode(subFolder, indentLevel + 1);
}
}
// Získá název složky.
public override string ToString()
{
return $"{Folder.DisplayName} ({Folder.ContentCount})";
}
}
Pro získání celé hierarchie složek vytvoříme třídu FolderHierarchy
, která využívá GraphClient
k seznamu všech složek rekurzivně. Zde je, jak to funguje:
static class FolderHierarchy
{
// Získává všechny složky v poštovní schránce rekurzivně a vrací hierarchickou kolekci objektů FolderNode.
public static List<FolderNode> Retrieve(IGraphClient client)
{
// Získání kořenových složek
var rootFolders = client.ListFolders();
var allFolders = new List<FolderNode>();
// Získání podložek rekurzivně
foreach (var folder in rootFolders)
{
var folderNode = new FolderNode(folder);
RetrieveSubFolders(client, folderNode);
allFolders.Add(folderNode);
}
return allFolders;
}
// Získává podložky rekurzivně a přidává je do vlastnosti SubFolders nadřazeného uzlu FolderNode.
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);
}
}
}
}
Krok 2: Získání hierarchie složek
Pomocí metody FolderHierarchy.Retrieve
můžete snadno procházet poštovní schránku a odhalit její strukturu složek. Zde je, jak to můžete udělat:
// Získání hierarchie složek z poštovní schránky
var folderNodes = FolderHierarchy.Retrieve(client);
// Tisk hierarchie složek ve strukturovaném formátu
foreach (var folderNode in folderNodes)
{
folderNode.PrintHierarchy();
}
Krok 3: Získání složek podle názvu
Jakmile je hierarchie složek získána, můžete rychle najít konkrétní složky podle názvu. Ať už máte zájem o přístup k Doručené poště nebo jakékoli vlastní složce, tato metoda zajišťuje, že je můžete rychle lokalizovat:
// Určete název složky, kterou hledáte
string targetFolderName = "Doručená pošta";
// Najděte cílovou složku podle názvu
var targetFolder = folderNodes.FirstOrDefault(
folderNode => folderNode.Folder.DisplayName.Equals(targetFolderName, StringComparison.OrdinalIgnoreCase))
?.Folder;
Seznam zpráv ve specifikované složce
S úspěšně získanou hierarchií složek je dalším krokem ponořit se do obsahu konkrétních složek. Představte si, že jste se dostali do Doručené pošty; nyní chcete zobrazit všechny zprávy, které obsahuje.
V této části prozkoumáme, jak vypsat zprávy v rámci konkrétní složky pomocí GraphClient a Aspose.Email pro .NET.
Jakmile máte složku, výpis zpráv v ní je jednoduchý. GraphClient
poskytuje metodu ListMessages pro získání všech zpráv ve složce, které můžete poté zpracovat nebo zobrazit.
Zde je kód pro seznam zpráv ze specifikované složky:
Console.WriteLine("Výpis zpráv ve specifikované složce...");
// Zavolejte metodu klienta pro seznam zpráv ve vybrané složce
var messageInfoCollection = client.ListMessages(targetFolder.ItemId);
Console.WriteLine($"{targetFolderName}:");
// Vytiskněte předmět zpráv
foreach (var messageInfo in messageInfoCollection)
{
Console.WriteLine($" - {messageInfo.Subject}");
}
Kolekce messageInfoCollection obsahuje důležité informace o každém e-mailu. Tyto informace mohou být využity k zobrazení shrnutí, generování zpráv nebo dokonce spouštění upozornění na základě specifických kritérií.
Závěr
V tomto článku jsme prozkoumali, jak využít sílu Microsoft Graph a knihovny Aspose.Email pro .NET k efektivnímu zpracování poštovních schránek, navigaci hierarchií složek a seznamu zpráv v konkrétních složkách. Dodržováním těchto kroků můžete vybudovat robustní aplikace, které bezproblémově interagují s e-mailovými daty, poskytují vylepšenou funkčnost a uživatelské zkušenosti.
Koncepty v akci
Pokud se těšíte na to, jak tyto koncepty uvést do praxe, můžete si stáhnout plně funkční příklad aplikace. Tato aplikace zahrnuje zdrojový kód popsaný v tomto článku a ukazuje, jak tyto funkce implementovat krok za krokem.
Navštivte naše repozitář GitHub, abyste získali vzorovou aplikaci: Aspose.Email pro .NET - Příklad GraphApp.
Zpracování poštovních schránek prostřednictvím Microsoft Graph nabízí bezprecedentní přístup k datům e-mailů a schopnost správy. S těmi správnými nástroji a technikami můžete vytvářet sofistikované aplikace, které poskytují smysluplné poznatky a automatizují složité úkoly, čímž nakonec zvyšují produktivitu a spokojenost uživatelů.
Vyzkoušejte to zdarma
Kromě toho Aspose.Email poskytuje komplexní dokumentaci, rozsáhlou API referenci a různé bezplatné online nástroje a aplikace pro vylepšení vašeho vývojového procesu. Vývojáři mají také přístup k bezplatnému podpornému fóru pro komunitní pomoc a poznatky a mohou se sledovat nejnovější tipy a návody prostřednictvím blogu Aspose blogu.