Hämta och lista e‑post från IMAP‑server
Hämta och lista meddelanden
Hur man får identifieringsinformation för meddelanden i en brevlåda
När du hämtar och bearbetar e‑postmeddelanden kan du få detaljerad identifieringsinformation, såsom sekvensnummer och unika ID:n, med hjälp av följande funktioner som tillhandahålls av den senaste versionen av Aspose.Email för .NET:
Aspose.Email.ImapMessageInfo klass: Representerar identifieringsinformationen om ett meddelande i en IMAP‑brevlåda.
ImapMessageInfo.SequenceNumber egenskap: Hämtar meddelandets sekvensnummer.
ImapMessageInfo.UniqueId egenskap: Hämtar meddelandets unika identifierare.
Aspose.Email.MailMessage.ItemId egenskap: Representerar ytterligare identifieringsinformation om meddelandet i brevlådan.
Följande kodsnutt demonstrerar hur man får identifieringsinformation för meddelanden i en IMAP‑brevlåda:
- Skapa en instans av ImapClient klass genom att ange nödvändiga parametrar såsom IMAP‑servervärd, port, e‑postadress, lösenord och säkerhetsalternativ.
- Använd ListMessages metod för att hämta en lista med meddelanden från "INBOX"‑mappen. Begränsa listan till de fem första meddelandena med metoden Take(5).
- Extrahera sekvensnumren för de listade meddelandena genom att använda SequenceNumber egenskap för varje meddelande.
- Använd FetchMessages metod för att hämta fullständiga detaljer för meddelandena från servern, med hjälp av sekvensnumren som erhölls i föregående steg.
- Iterera genom de hämtade meddelandena och för varje meddelande hämta och visa följande information:
- Meddelande‑sekvensnumret.
- Egenskapen ItemId.SequenceNumber.
- Meddelandets ämne.
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}");
}
}
Lista MIME‑meddelande‑ID:n från servern
ImapMessageInfo tillhandahåller MIME MessageId för meddelandeidentifiering utan att extrahera hela meddelandet. Följande kodsnutt visar hur du listar MIME‑messageId.
Lista meddelanden från servern
Aspose.Email tillhandahåller en överlagrad variant med 2 medlemmar av ListMessages() för att hämta ett specificerat antal meddelanden baserat på en fråga. Följande kodsnutt visar hur man listar meddelanden.
Lista meddelanden rekursivt
IMAP‑protokollet stödjer rekursiv listning av meddelanden från en brevlådemapp. Detta hjälper även till att lista meddelanden från undermappar i en mapp. Följande kodsnutt visar hur du listar meddelanden rekursivt.
Lista meddelanden med MultiConnection
ImapClient ger en UseMultiConnection egenskap som kan användas för att skapa flera anslutningar för tunga operationer. Du kan också ange antalet anslutningar som ska användas under multikonnectionsläget genom att använda ImapClient.ConnectionsQuantity. Följande kodsnutt demonstrerar användning av multikonnectionsläge för att lista meddelanden och jämför dess prestanda med enkelnanslutningsläge.
Lista meddelanden med sidningsstöd
I scenarier där e-postservern innehåller ett stort antal meddelanden i brevlådan är det ofta önskvärt att lista eller hämta meddelandena med stöd för sidindelning. Aspose.Email API:s ImapClient låter dig hämta meddelandena från servern med stöd för sidindelning.
Lista meddelandebilagor
För att få information om bilagor såsom namn, storlek utan att hämta bilagedatan, prova följande API:er:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo – Representerar information om en bilaga.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection – Representerar en samling av ImapAttachmentInfo klass.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) – Hämtar information för varje bilaga i ett meddelande.
Kodexemplet med stegen nedan visar hur du använder API:erna:
- Anropa ListMessages() metod på imapClient-objektet. Denna metod returnerar en ImapMessageInfoCollection som innehåller information om meddelandena i brevlådan.
- Iterera genom varje meddelande i messageInfoCollection med en foreach-loop.
- Anropa ListAttachments() metod på imapClient-objektet, där SequenceNumber-egenskapen för meddelandeobjektet skickas som parameter. Denna metod returnerar en ImapAttachmentInfoCollection som innehåller information om bilagorna i meddelandet.
- Iterera genom varje bilaga i attachmentInfoCollection med en foreach-loop.
- Inom den inre loopen kan du komma åt informationen om varje bilaga genom att använda egenskaperna i objektet attachmentInfo.
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);
}
}
Hämta och spara meddelanden
Hämta meddelanden från servern
Den ImapClient klassen kan hämta meddelanden från en IMAP‑server och spara dem i EML‑format på en lokal disk. Följande steg krävs för att spara meddelandena till disk:
- Skapa en instans av ImapClient klass.
- Ange ett värdnamn, port, användarnamn och lösenord i ImapClient constructor.
- Välj mappen med hjälp av SelectFolder() metod.
- Anropa ListMessages metod för att få ImapMessageInfoCollection objekt.
- Iterera igenom ImapMessageInfoCollection samling, anropa SaveMessage() metod och ange utdatavägen samt filnamnet.
Följande kodavsnitt visar hur du hämtar e‑postmeddelanden från en server och sparar dem.
Hämta meddelanden i fallande ordning
Aspose.Email tillhandahåller ImapClient.ListMessagesByPage metod som listar meddelanden med stöd för sidindelning. Vissa överlagringar av ImapClient.ListMessagesByPage accept PageSettings som en parameter. PageSettings tillhandahåller en AscendingSorting egenskap som, när den sätts till false, returnerar e‑post i fallande ordning.
Följande exempelkod demonstrerar användningen av AscendingSorting egenskap hos PageSettings klass för att ändra ordningen på e‑postmeddelanden.
Spara meddelanden i MSG-format
För att spara e‑post i MSG-format, ImapClient.FetchMessage() metoden måste anropas. Den returnerar meddelandet i en instans av MailMessage klass. Den MailMessage.Save() metoden kan sedan anropas för att spara meddelandet i MSG. Följande kodavsnitt visar hur du sparar meddelanden i MSG‑format.
Gruppera hämtade meddelanden
ImapClient ger en FetchMessages metod som accepterar en iterabel av sekvensnummer eller unika ID och returnerar en lista med MailMessage. Följande kodsnutt demonstrerar användningen av FetchMessages metod för att hämta meddelanden med sekvensnummer och unikt ID.
Hämta mappar och läsa meddelanden rekursivt
I den här artikeln, de flesta av ImapClient Funktionerna används för att skapa en applikation som listar alla mappar och undermappar rekursivt från en IMAP-server. Den sparar också meddelandena i varje mapp och undermapp i MSG-format på en lokal disk. På disken skapas och sparas mappar och meddelanden i samma hierarkiska struktur som på IMAP-servern. Följande kodsnutt visar hur du hämtar meddelanden och information om undermappar rekursivt.
Hantera speciell meddelandeinformation
Hämta extra parametrar som sammanfattningsinformation
Hämta List-Unsubscribe-headerinformation
List-Unsubscribe‑rubriken innehåller URL:en för att avregistrera sig från e‑postlistor, t.ex. annonser, nyhetsbrev osv. För att hämta List-Unsubscribe‑rubriken, använd ListUnsubscribe egenskap hos ImapMessageInfo klass. Följande exempel visar användningen av ListUnsubscribe egenskap för att hämta List-Unsubscribe‑rubriken.