Haal e‑mails op en toon ze van IMAP‑server

Berichten ophalen en opsommen

Hoe identificatie‑informatie voor berichten in een mailbox te verkrijgen

Bij het ophalen en verwerken van e‑mailberichten kun je gedetailleerde identificatie‑informatie verkrijgen, zoals volgnummers en unieke ID’s, met behulp van de volgende functies die worden geleverd door de nieuwste versie van Aspose.Email voor .NET:

Aspose.Email.ImapMessageInfo klasse: Vertegenwoordigt de identificatie‑informatie over een bericht in een IMAP‑mailbox.

ImapMessageInfo.SequenceNumber eigenschap: Haalt het volgnummer van het bericht op.

ImapMessageInfo.UniqueId eigenschap: Haalt de unieke identificatie van het bericht op.

Aspose.Email.MailMessage.ItemId eigenschap: Geeft aanvullende identificatie‑informatie over het bericht binnen de mailbox.

Het onderstaande code‑fragment demonstreert hoe je identificatie‑informatie voor berichten in een IMAP‑mailbox kunt verkrijgen:

  1. Maak een instantie van de ImapClient klasse door de benodigde parameters te leveren, zoals de IMAP‑serverhost, poort, e‑mailadres, wachtwoord en beveiligingsopties.
  2. Gebruik de ListMessages methode om een lijst van berichten uit de "INBOX"‑map op te halen. Beperk de lijst tot de eerste vijf berichten met de Take(5)‑methode.
  3. Extraheer de volgnummers van de opgelijste berichten met behulp van de SequenceNumber eigenschap van elk bericht.
  4. Gebruik de FetchMessages methode om de volledige details van de berichten van de server op te halen, met behulp van de in de vorige stap verkregen volgnummers.
  5. Loop door de opgehaalde berichten en haal voor elk bericht de volgende informatie op en toon deze:
  • Het volgnummer van het bericht.
  • De eigenschap ItemId.SequenceNumber.
  • Het onderwerp van het bericht.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

Lijst MIME‑bericht‑ID’s van server

ImapMessageInfo biedt de MIME MessageId voor berichtidentificatie zonder het volledige bericht te extraheren. Het onderstaande codefragment toont hoe u MIME‑messageId kunt vermelden.

Berichten van server weergeven

Aspose.Email biedt een 2‑parameter overladen variant van ListMessages() om een opgegeven aantal berichten op te halen op basis van een query. Het onderstaande code‑fragment laat zien hoe je berichten kunt opsommen.

Berichten recursief weergeven

Het IMAP‑protocol ondersteunt het recursief vermelden van berichten uit een mailboxmap. Dit helpt ook om berichten uit submappen van een map te vermelden. Het onderstaande codefragment toont hoe u berichten recursief kunt vermelden.

Berichten weergeven met MultiConnection

ImapClient biedt een UseMultiConnection eigenschap die kan worden gebruikt om meerdere verbindingen voor zware bewerkingen te maken. U kunt ook het aantal verbindingen dat tijdens de multiverbindingsmodus wordt gebruikt instellen door gebruik te maken van ImapClient.ConnectionsQuantity. Het onderstaande codefragment toont het gebruik van de multiverbindings‑modus voor het vermelden van berichten en vergelijkt de prestaties met de enkele‑verbinding‑modus.

Berichten weergeven met pagineringondersteuning

In scenario’s waarin de e-mailserver een groot aantal berichten in de mailbox bevat, is het vaak wenselijk om de berichten weer te geven of op te halen met ondersteuning voor paginering. Aspose.Email API’s ImapClient stelt je in staat om de berichten van de server op te halen met pagineringondersteuning.

Berichtbijlagen weergeven

Om informatie over bijlagen zoals naam en grootte te verkrijgen zonder de bijlagegegevens op te halen, probeer de volgende API’s:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - Vertegenwoordigt informatie over een bijlage.
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Vertegenwoordigt een collectie van de ImapAttachmentInfo klasse.
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Haalt informatie op voor elke bijlage in een bericht.

De onderstaande codevoorbeeld met stappen laat zien hoe je de API’s gebruikt:

  1. Roep de ListMessages() methode op het imapClient-object. Deze methode retourneert een ImapMessageInfoCollection met informatie over de berichten in de mailbox.
  2. Itereer door elk bericht in de messageInfoCollection met behulp van een foreach-lus.
  3. Roep de ListAttachments() methode op het imapClient-object, waarbij de SequenceNumber-eigenschap van het berichtobject als parameter wordt doorgegeven. Deze methode retourneert een ImapAttachmentInfoCollection met informatie over de bijlagen in het bericht.
  4. Itereer door elke bijlage in de attachmentInfoCollection met behulp van een foreach-lus.
  5. Binnen de innerlijke lus kun je de informatie over elke bijlage benaderen via de eigenschappen van het attachmentInfo-object.
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

Berichten ophalen en opslaan

Berichten van server ophalen

De ImapClient klasse kan berichten van een IMAP‑server ophalen en de berichten in EML‑indeling opslaan op een lokale schijf. De volgende stappen zijn vereist om de berichten op te slaan op schijf:

  1. Maak een instantie van de ImapClient klasse.
  2. Specificeer een hostnaam, poort, gebruikersnaam en wachtwoord in de ImapClient constructor.
  3. Selecteer de map met behulp van SelectFolder() methode.
  4. Roep de ListMessages methode om de ImapMessageInfoCollection object.
  5. Itereer door de ImapMessageInfoCollection collectie, roep de SaveMessage() methode en geef het uitvoerpad en de bestandsnaam op.

Het onderstaande codefragment laat zien hoe je e‑mailberichten van een server ophaalt en opslaat.

Berichten ophalen in aflopende volgorde

Aspose.Email biedt ImapClient.ListMessagesByPage methode die berichten lijst met pagineringondersteuning. Sommige overloads van ImapClient.ListMessagesByPage accepteert PageSettings als parameter. PageSettings biedt een AscendingSorting eigenschap die, wanneer ingesteld op false, e-mails in aflopende volgorde retourneert.

De volgende voorbeeldcode demonstreert het gebruik van AscendingSorting eigenschap van de PageSettings klasse om de volgorde van e‑mails te wijzigen.

Berichten opslaan in MSG-indeling

Om e-mails op te slaan in MSG-formaat, de ImapClient.FetchMessage() methode moet worden aangeroepen. Het retourneert het bericht in een instantie van de MailMessage klasse. De MailMessage.Save() methode kan vervolgens worden aangeroepen om het bericht op te slaan als MSG. Het onderstaande codefragment laat zien hoe je berichten in MSG‑indeling opslaat.

Gehaalde berichten groeperen

ImapClient biedt een FetchMessages methode die een iterable van Volgnummer of Unieke ID accepteert en een lijst retourneert van MailMessage. Het volgende codefragment demonstreert het gebruik van de FetchMessages methode om berichten op te halen via Volgnummer en Unieke ID.

Mappen ophalen en berichten recursief lezen

In dit artikel, de meeste van de ImapClient functies worden gebruikt om een applicatie te maken die alle mappen en submappen recursief vanuit een IMAP-server weergeeft. Het slaat ook de berichten in elke map en submap op in MSG-formaat op een lokale schijf. Op de schijf worden mappen en berichten aangemaakt en opgeslagen in dezelfde hiërarchische structuur als op de IMAP-server. De volgende code‑snippet laat zien hoe je de berichten en submap‑informatie recursief kunt ophalen.

Speciale berichtinformatie behandelen

Extra parameters ophalen als samenvattingsinformatie

List-Unsubscribe headerinformatie ophalen

De List-Unsubscribe-header bevat de URL om je af te melden voor e‑maillijsten, bijv. advertenties, nieuwsbrieven, enz. Om de List-Unsubscribe-header op te halen, gebruik de ListUnsubscribe eigenschap van de ImapMessageInfo klasse. Het volgende voorbeeld toont het gebruik van de ListUnsubscribe eigenschap om de List-Unsubscribe-header op te halen.