Hämta e-postmeddelanden med C# .NET

När du bygger ett e-posthanteringsprogram är ett av de avgörande stegen att skapa en pålitlig och snabb funktionalitet för att hämta meddelanden från en inkorg. I den här artikeln kommer vi att undersöka hur man kan utnyttja det kraftfulla .NET-biblioteket för att hämta e-postmeddelanden i C# via POP3, IMAP, EWS, Graph API och från offline-postlådelagringar i olika format, till exempel en pst-fil. Artikeln åtföljs av tydliga kodexempel som du kan använda för att testa bibliotekets funktionalitet.

.NET API för att hämta meddelanden

För att extrahera meddelanden från en server eller en postlådelagring i C# kommer vi att använda Aspose.Email for .NET. Detta är ett kraftfullt API-bibliotek som låter utvecklare arbeta med e-postmeddelanden i sina .NET-applikationer. Det ger en omfattande uppsättning funktioner för att arbeta med e-post i en mängd olika scenarier. Det förenklar arbetet med att skapa, manipulera och konvertera e-postmeddelanden, arbeta med e-postbilagor, kalendrar, kontakter etc. samt att extrahera meddelanden från brevlådor och hantera deras innehåll efter behov. Du kan enkelt implementera API:et i ditt projekt efter att ha laddat ner dess DLL eller installerat det från NuGet med följande kommando:

PM> Install-Package Aspose.Email

Hämta e-postmeddelanden via POP3

Med POP3-protokollet laddas e-postmeddelanden ner från servern till ditt lokala system, vilket möjliggör enkel åtkomst och hantering. Dess funktionalitet kan enkelt integreras i din applikation. Klassen Aspose.Email for .NET POP3Client används för att skapa ett POP3-klientobjekt för manipulationer med meddelanden.

Kodexemplet och stegen nedan visar hur du använder POP3-klienten för att ansluta till en POP3-e-postserver, hämta en lista med meddelanden och hämta meddelandeinnehållet:

  1. Först skapas instansen av POP3-klientobjektet.
  2. Eftersom POP3-protokollet saknar inbyggd kryptering, vilket gör överföringen av e-postmeddelanden sårbar för avlyssning och obehörig åtkomst, ställer det in egenskapen SecurityOptions på att använda en säkerhetsmekanism med servern.
  3. Inuti en foreach loop, itererar koden över varje meddelande i brevlådan och hämtar meddelandeinnehållet med metoden FetchMessage.
using Aspose.Email;
using Aspose.Email.Clients.Pop3;

using (var client = new Pop3Client("pop3.server.com", "username", "password"))
{
    client.SecurityOptions = SecurityOptions.Auto;
  
    foreach (var messageInfo in pop3Client.ListMessages())
    {
         var eml = client.FetchMessage(messageInfo.SequenceNumber);
    }
}

Du kan ytterligare anpassa koden för att passa dina specifika behov och använda det hämtade meddelandeinnehållet på önskat sätt med andra funktioner i .NET-biblioteket.

Använda IMAP för att hämta meddelanden

IMAP är ett annat populärt protokoll som erbjuder ett mer synkroniserat och mångsidigt sätt att komma åt e-postmeddelanden. Till skillnad från POP3 håller IMAP e-postmeddelanden på servern samtidigt som du kan hantera och organisera dem från flera enheter. Ändringar som görs på en enhet återspeglas på alla enheter, vilket ger en sömlös och konsekvent e-postupplevelse.

Aspose.Email för .NET erbjuder dig klassen ImapClient och dess egenskaper för att ansluta till IMAP-e-postservern och hantera e-postmeddelanden i mapparna. Följande kodexempel med steg visar dig hur du får meddelanden från servern:

  1. Instantiera IMAPClient-instansen.
  2. Ge säkerheten för din e-postkommunikation genom att konfigurera egenskapen SecurityOptions.
  3. Visa inkorgsmeddelanden som hämtar dem ett i taget.
using Aspose.Email;
using Aspose.Email.Clients.Imap;

using (var client = new ImapClient("imap.server.com", "username", "password"))
{
    client.SecurityOptions = SecurityOptions.Auto;
    client.SelectFolder("Inbox");
  
    foreach (var messageInfo in client.ListMessages())
    {
         var eml = client.FetchMessage(messageInfo.UniqueId);
    }
}

Hämta meddelanden från MS Exchange Server med EWSClient

För applikationer som interagerar med Microsoft Exchange-servrar erbjuder Aspose.Email för .NET stöd för EWS. Detta protokoll underlättar avancerade funktioner, inklusive e-posthämtning, kalenderhantering och kontaktsynkronisering. EWS är särskilt fördelaktigt för applikationer som kräver integration med Microsoft Exchange-miljöer.

För att ansluta till Exchange-servern och hämta e-postmeddelanden kommer vi att använda klassen IEWSClient i .NET API. Kodexemplet nedan visar hur man upprättar en anslutning till brevlådan, listar meddelanden i mappen Inkorg och sedan hämtar varje enskilt e-postmeddelande. Denna process gör det möjligt för utvecklare att effektivt komma åt och manipulera e-postdata programmatiskt i sina .NET-applikationer.

  1. Initiera en EWS-klient genom att anropa metoden GetEWSClient i C#-biblioteket.
  2. Iterera genom inkorgsmeddelanden i foreach loop med metoden ListMessages.
  3. Hämta innehållet i e-postmeddelandet med metoden FetchMessage.
using Aspose.Email;
using Aspose.Email.Clients.Exchange.WebService;

using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "UserName", "Password"))
{
    foreach(var msgInfo in client.ListMessages(client.MailboxInfo.InboxUri)
    {
        var eml = client.FetchMessage(msgInfo.UniqueUri);
    }
}

Beroende på din applikations krav kan du utföra ytterligare bearbetning av den hämtade eml-variabeln. Detta kan inkludera att tolka e-postrubriker, extrahera bilagor, analysera e-posttexten eller andra relevanta åtgärder med vårt funktionsrika API.

Microsoft Graph för att extrahera meddelanden från en server

Aspose.Email för .NET gör det möjligt för utvecklare att använda kraften i Microsoft Graph API för e-posthämtning. Genom att integrera Graph API får din applikation tillgång till en enhetlig slutpunkt för att hämta e-post, kalendrar och kontakter. Denna integration är ovärderlig när du vill skapa omfattande, multifunktionella applikationer.

Kodexemplet och stegen nedan visar hur du använder Microsoft Graph API för att arbeta med e-postmappar och meddelanden. Den skapar en Graph-klient, hämtar mappen “Inkorgen” och itererar över meddelandena i den mappen för att hämta varje meddelande.

  1. Skapa en Graph-klientinstans genom att anropa metoden GetClient från klassen GraphClient och skicka tokenProvider och “tenant ID” som parametrar.
  2. Använd metoden ListFolders från klienten för att hämta en samling av alla mappar.
  3. Skaffa mappen “Inkorgen” genom att använda FirstOrDefault LINQ-metoden i mappsamlingen. Lambdauttrycket kontrollerar om egenskapen DisplayName för en mapp matchar “Inkorgen”.
  4. Iterera över meddelandena i den hämtade mappen.ItemId genom att anropa ListMessages på klienten.
  5. För varje meddelande hämtar du meddelandedetaljerna genom att anropa FetchMessage på klienten och skicka in msgInfo.ItemId som en parameter.
using Aspose.Email;
using Aspose.Email.Clients.Graph;

// Skapa en Graph-klient
using (var client = GraphClient.GetClient(tokenProvider, "tenant ID"))
{
    var folder = client.ListFolders().FirstOrDefault(folder => folder.DisplayName.Equals("Inbox"));

    foreach (var msgInfo in client.ListMessages(folder.ItemId))
    {
        var msg = client.FetchMessage(msgInfo.ItemId);
    }
}

Extrahera meddelanden från postlådelagring offline

Vårt omfattande C#-bibliotek ger dig möjlighet att skapa applikationer med postlådelagringsmöjligheter offline. Genom att använda den här funktionen kan du ladda ner och lagra e-postmeddelanden lokalt, vilket säkerställer åtkomst även utan internetanslutning. Detta är särskilt användbart för användare som behöver sömlös e-poståtkomst när de är på språng.

Biblioteket fungerar bra med fristående lagringar av olika format, såsom PST, MBOX, OLM, TGZ men i den här artikeln kommer vi att överväga ett exempel på att få e-post från PST.

För att implementera den här funktionen med offlineåtkomst till brevlådeinformationen kommer vi att använda klassen PersonalStorage i biblioteket. Följande är kodexemplet och stegen för att hämta meddelanden från en pst-fil:

  1. Börja med att skapa ett nytt personligt lagringsobjekt genom att anropa metoden FromFile för klassen PersonalStorage och skicka sökvägen till PST-filen som en parameter.

  2. Initiera en variabel som heter “folder” genom att anropa metoden GetSubfolder på egenskapen RootFolder för det personliga lagringsobjektet. Skicka strängen “Inkorg” som parameter för att ange namnet på mappen som ska hämtas.

  3. Använd en foreach loop för att iterera över varje “msgInfo”-objekt i samlingen som returneras av metoden EnumerateMessages för “folder”-objektet.

  4. Inuti slingan skapar du en ny variabel med namnet “msg” genom att anropa metoden ExtractMessage på det personliga lagringsobjektet. Skicka egenskapen EntryIdString för det aktuella “msgInfo”-objektet som parameter för att ange vilket meddelande som ska extraheras.

Koden kommer att utföra operationer som anges i steg 3 och 4 för varje meddelande i mappen.

using Aspose.Email.Mapi;
using Aspose.Email.Storage.Pst;

using (var pst = PersonalStorage.FromFile("storage.pst"))
{
    var folder = pst.RootFolder.GetSubfolder("Inbox");

    foreach(var msgInfo in folder.EnumerateMessages())
    {
       var msg = pst.ExtractMessage(msgInfo.EntryIdString);
    }
}

Slutsats

I den här artikeln har vi lärt oss hur man kan utnyttja kraften i Aspose.Email for .NET för e-posthämtning. Med stöd för POP3, IMAP, EWS, Graph API och offline-postlådelagring ger biblioteket dig möjlighet att anpassa din applikations funktionalitet för att möta specifika behov. Oavsett om du utvecklar en klientapplikation, ett integrationsverktyg eller en anpassad lösning, utrustar vårt .NET API dig med verktygen för att skapa en sömlös och effektiv meddelandehanteringsupplevelse. Du kan utforska andra funktioner i Aspose.Email med hjälp av dokumentationen. Du kan också skicka dina frågor till vårt forum.

Se även