Arbeta med meddelanden från servern

Hämtning av brevlådsinformation

Vi kan hämta information om brevlådan, såsom antalet meddelanden och brevlådans storlek, med metoderna GetMailBoxSize() och GetMailBoxInfo().

  • Metoden GetMailBoxSize() returnerar brevlådans storlek i byte.
  • Metoden GetMailBoxInfo() returnerar ett objekt av typen Pop3MailBoxInfo.

Det är också möjligt att få antalet meddelanden med hjälp av egenskapen MessageCount och storleken med hjälp av egenskapen OccupiedSize. Följande exempelkod visar hur man får information om brevlådan. Den visar hur man:

  1. Skapa en Pop3Client.
  2. Anslut till en POP3‑server.
  3. Hämta storleken på brevlådan.
  4. Hämta brevlådsinformation.
  5. Hämta antalet meddelanden i brevlådan.
  6. Hämta den upptagna storleken.

Hämta e‑postantal i brevlådan

Följande kodsnutt visar hur du räknar e‑postmeddelanden i en brevlåda.

Aspose.Email låter utvecklare arbeta med e‑post på många olika sätt. Till exempel kan de hämta huvudinformation innan de bestämmer sig för att ladda ner ett e‑postmeddelande. Eller de kan hämta e‑post från en server och spara dem utan att parsas (snabbare) eller efter att ha parsats (långsammare). Denna artikel visar hur man hämtar och konverterar e‑post.

Hämtning av information om e‑posthuvuden

E‑postrubriker kan ge oss information om ett e‑postmeddelande som vi kan använda för att avgöra om hela meddelandet ska hämtas eller inte. Vanligtvis innehåller rubrikinformation avsändare, ämne, mottagningsdatum etc. (E‑postrubriker beskrivs i detalj i Avancerade e‑postrubriker. Det ämnet handlar specifikt om att skicka e‑post med SMTP, men rubrikinformationen gäller även för POP3‑e‑post). Följande exempel visar hur man hämtar e‑postrubriker från en POP3‑server med hjälp av meddelandets sekvensnummer.

Hämtning av e‑postmeddelanden

Aspose.Email.Pop3‑klasskomponenten ger möjligheten att hämta e‑postmeddelanden från POP3‑servern och parsra dem till en MailMessage‑instans med hjälp av MailMessage‑komponenter. MailMessage‑klassen innehåller flera egenskaper och metoder för att manipulera e‑postinnehåll. Genom att använda Pop3Client‑klassens FetchMessage‑funktion kan du få en MailMessage‑instans direkt från POP3‑servern. Följande kodsnutt visar hur du hämtar ett komplett e‑postmeddelande från POP3‑servern.

Hämta meddelandesammanfattning med unikt ID

API:ets POP3‑klient kan hämta meddelandesammanfattning från servern med hjälp av meddelandets unika ID. Detta ger snabb åtkomst till meddelandets korta information utan att först hämta hela meddelandet från servern. Följande kodsnutt visar hur du hämtar meddelandesammanfattning.

Lista meddelanden med MultiConnection

För tungt belastade operationer erbjuder Aspose.Email egenskapen ‘use_multi_connection’ i Pop3Client klass för att använda flera anslutningar vid hämtning av e‑post. Dock leder inte användning av detta läge nödvändigtvis till ökad prestanda. Följande kodsnutt visar hur du upprättar en anslutning till en POP3‑server, konfigurerar klienten för att tillåta upp till 5 samtidiga anslutningar och aktiverar multi‑anslutningsläget för att hämta information om meddelandena som finns på servern:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()

Hämta meddelanden från servern och spara till disk

Spara meddelande till disk utan att parsas

Om du vill ladda ner e‑postmeddelanden från POP3‑servern utan att parsea dem, använd Pop3Client‑klassens SaveMessage‑funktion. SaveMessage‑funktionen parsear inte e‑postmeddelandet, så den är snabbare än FetchMessage‑funktionen. Följande kodsnutt visar hur man sparar ett meddelande efter dess sekvensnummer, i detta fall nummer 1. SaveMessage‑metoden sparar meddelandet i original‑EML‑format utan att parsea det.

Parsa meddelande innan sparning

Använd ‘fetch_message’-metoden på klientobjektet som skapats med Pop3Client klass för att hämta meddelandet med ett specifikt sekvensnummer. Kodexemplet nedan demonstrerar hur man hämtar ett specifikt meddelande och sparar det med dess ämne som filnamn genom att anropa ‘save’-metoden på msg‑objektet:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

Filtrering av meddelanden på avsändare, mottagare eller datum

Pop3Client‑klassen, beskriven i Ansluta till en POP3‑server, tillhandahåller metoden list_messages() som hämtar alla meddelanden från en brevlåda. För att bara få meddelanden som matchar ett visst villkor, använd den överlagrade ListMessages()-metoden som tar ett MailQuery‑objekt som argument. MailQuery‑klassen erbjuder olika egenskaper för att specificera sökvillkoren, t.ex. datum, ämne, avsändare, mottagare med mera. MailQueryBuilder‑klassen används för att bygga sökuttrycket. Först sätts alla villkor och begränsningar, och sedan fylls MailQuery med den fråga som skapats av MailQueryBuilder. MailQuery‑objektet används av Pop3Client för att extrahera den filtrerade informationen från servern. Denna artikel visar hur man filtrerar e‑postmeddelanden från en brevlåda. Det första exemplet illustrerar hur man filtrerar meddelanden baserat på datum och ämne. Vi visar även hur man filtrerar på andra kriterier och hur man bygger mer komplexa frågor. Det visar också hur man använder datum‑ och tidsfilter för att hämta specifika e‑postmeddelanden från brevlådan. Dessutom visas hur man tillämpar skiftlägeskänslig filtrering.

Filtrering av meddelanden från brevlåda

För att filtrera meddelanden från en brevlåda:

  1. Anslut och logga in på en POP3‑server.
  2. Skapa en instans av MailQuery och sätt önskade egenskaper.
  3. Anropa metoden Pop3Client.list_messages(MailQuery query) och skicka med MailQuery som parameter för att endast få de filtrerade meddelandena.

Följande kodsnutt visar hur du ansluter till en POP3‑brevlåda och hämtar meddelanden som kommit idag och har ordet "newsletter" i ämnet.

Hämtning av meddelanden som uppfyller specifika kriterier

Aspose.Email möjliggör även att bygga komplexa sökkriterier för att fråga och filtrera e‑postmeddelanden. För detta ändamål använd MailQueryBuilder klass och dess egenskaper. Kriterierna för hämtning är följande:

  • Hämta meddelanden efter leveransdatum.
  • Hämta meddelanden inom ett intervall.
  • Hämta meddelanden från en specifik avsändare.
  • Hämta meddelanden från en specifik domän.
  • Hämta meddelanden till en specifik mottagare.

Dagens datum

För att hämta meddelanden efter leveransdatum, använd ‘internal_date’-egenskapen som visas i kodexemplet nedan:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Datumintervall

För att hämta meddelanden inom ett datumintervall, använd samma ‘internal_date’-egenskap och specificera datumintervallet som visas i kodexemplet nedan:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

Specifik avsändare

För att hämta meddelanden från en specifik avsändare, använd ‘from_address’-egenskapen som visas i kodexemplet nedan:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Specifik domän

För att hämta meddelanden från en specifik domän, använd ‘from_address’-egenskapen som visas i kodexemplet nedan:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Specifik mottagare

För att hämta meddelanden till en specifik mottagare, använd ’to’-egenskapen som visas i kodexemplet nedan:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Bygga komplexa frågor

Ibland är det nödvändigt att uppfylla mer än en fråga. Aspose.Email möjliggör detta genom att kombinera frågor i flera satser. Skapa en MailQueryBuilder objektet och använder dess egenskaper för att bygga specifika frågor.

Kombinera frågor med AND

Följande kodsnutt visar hur man kombinerar frågor med AND.

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

Kombinera frågor med OR

Följande kodsnutt visar hur du kombinerar frågor med OR.

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

Användning av skiftlägeskänsliga filter

API:et ger också möjligheten att filtrera e‑post från brevlådan baserat på skiftlägeskänsliga kriterier. Följande metoder i StringComparisonField klass ger möjlighet att söka e‑post med angivna skiftlägesflaggor.

Metod Aspose.Email.StringComparisonField.contains(värde, ignore_case) Metod Aspose.Email.StringComparisonField.equals(värde, ignore_case) Metod Aspose.Email.StringComparisonField.not_contains(värde, ignore_case) Metod Aspose.Email.StringComparisonField.not_equals(värde, ignore_case)

Följande kodsnutt visar hur du implementerar denna funktion i ditt projekt:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)