Pobieranie i listowanie e‑maili z serwera IMAP
Pobieranie i listowanie wiadomości
Jak uzyskać informacje identyfikacyjne wiadomości w skrzynce pocztowej
Podczas pobierania i przetwarzania wiadomości e‑mail można uzyskać szczegółowe informacje identyfikacyjne, takie jak numery kolejnych i unikalne identyfikatory, korzystając z poniższych funkcji udostępnionych w najnowszej wersji Aspose.Email dla .NET:
Aspose.Email.ImapMessageInfo klasa: Reprezentuje informacje identyfikacyjne o wiadomości w skrzynce IMAP.
ImapMessageInfo.SequenceNumber właściwość: Pobiera numer kolejny wiadomości.
ImapMessageInfo.UniqueId właściwość: Pobiera unikalny identyfikator wiadomości.
Aspose.Email.MailMessage.ItemId właściwość: Reprezentuje dodatkowe informacje identyfikacyjne wiadomości w skrzynce pocztowej.
Poniższy fragment kodu demonstruje, jak uzyskać informacje identyfikacyjne wiadomości w skrzynce IMAP:
- Utwórz instancję ImapClient klasa, podając niezbędne parametry, takie jak host serwera IMAP, port, adres e‑mail, hasło oraz opcje zabezpieczeń.
- Użyj ListMessages metoda do pobrania listy wiadomości z folderu "INBOX". Ogranicz listę do pierwszych pięciu wiadomości za pomocą metody Take(5).
- Wyodrębnij numery kolejnych wymienionych wiadomości, używając SequenceNumber właściwość każdej wiadomości.
- Użyj FetchMessages metoda do pobrania pełnych szczegółów wiadomości z serwera, przy użyciu numerów kolejnych uzyskanych w poprzednim kroku.
- Przejdź przez pobrane wiadomości i dla każdej z nich pobierz oraz wyświetl następujące informacje:
- Numer kolejny wiadomości.
- Właściwość ItemId.SequenceNumber.
- Temat wiadomości.
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 identyfikatorów wiadomości MIME z serwera
ImapMessageInfo udostępnia MIME MessageId do identyfikacji wiadomości bez wyciągania całej wiadomości. Poniższy fragment kodu pokazuje, jak wyświetlić MIME messageId.
Lista wiadomości z serwera
Aspose.Email udostępnia dwuelementową przeciążoną wersję ListMessages() aby pobrać określoną liczbę wiadomości na podstawie zapytania. Poniższy fragment kodu pokazuje, jak wyświetlić listę wiadomości.
Rekurencyjne wymienianie wiadomości
Protokół IMAP obsługuje rekurencyjne listowanie wiadomości z folderu skrzynki. Dzięki temu można również wyświetlać wiadomości z podfolderów. Poniższy fragment kodu pokazuje, jak listować wiadomości rekurencyjnie.
Wymień wiadomości z użyciem MultiConnection
ImapClient zapewnia UseMultiConnection właściwość, której można używać do tworzenia wielu połączeń przy intensywnych operacjach. Możesz także ustawić liczbę połączeń używanych w trybie wielokrotnego połączenia, używając ImapClient.ConnectionsQuantity. Poniższy fragment kodu demonstruje użycie trybu wielokrotnego połączenia do listowania wiadomości i porównuje jego wydajność z trybem jednego połączenia.
Wymienianie wiadomości ze wsparciem stronicowania
W scenariuszach, w których serwer e‑mail zawiera dużą liczbę wiadomości w skrzynce, często pożądane jest wyświetlanie lub pobieranie wiadomości z obsługą stronicowania. API Aspose.Email ImapClient pozwala pobrać wiadomości z serwera z obsługą stronicowania.
Lista załączników wiadomości
Aby uzyskać informacje o załącznikach, takie jak nazwa czy rozmiar, bez pobierania danych załącznika, wypróbuj następujące API:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo – Reprezentuje informacje o załączniku.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection – Reprezentuje kolekcję ImapAttachmentInfo klasa.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) – Pobiera informacje o każdym załączniku w wiadomości.
Przykładowy kod wraz z poniższymi krokami pokaże, jak używać API:
- Wywołaj ListMessages() metoda na obiekcie imapClient. Ta metoda zwróci ImapMessageInfoCollection zawierającą informacje o wiadomościach w skrzynce pocztowej.
- Iteruj po każdej wiadomości w kolekcji messageInfoCollection używając pętli foreach.
- Wywołaj ListAttachments() metoda na obiekcie imapClient, przekazująca właściwość SequenceNumber obiektu wiadomości jako parametr. Ta metoda zwróci ImapAttachmentInfoCollection zawierającą informacje o załącznikach w wiadomości.
- Iteruj po każdym załączniku w kolekcji attachmentInfoCollection używając pętli foreach.
- W wewnętrznej pętli możesz uzyskać dostęp do informacji o każdym załączniku, używając właściwości obiektu 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);
}
}
Pobieranie i zapisywanie wiadomości
Pobierz wiadomości z serwera
Ten ImapClient klasa może pobierać wiadomości z serwera IMAP i zapisywać je w formacie EML na lokalnym dysku. Następujące kroki są wymagane, aby zapisać wiadomości na dysku:
- Utwórz instancję ImapClient klasa.
- Określ nazwę hosta, port, nazwę użytkownika i hasło w ImapClient constructor.
- Wybierz folder używając SelectFolder() metoda.
- Wywołaj ListMessages metodę, aby uzyskać ImapMessageInfoCollection obiekt.
- Iteruj przez ImapMessageInfoCollection kolekcję, wywołaj SaveMessage() metodę i podać ścieżkę wyjściową oraz nazwę pliku.
Poniższy fragment kodu pokazuje, jak pobrać wiadomości e-mail z serwera i je zapisać.
Pobierz wiadomości w kolejności malejącej
Aspose.Email udostępnia ImapClient.ListMessagesByPage metoda, która wymienia wiadomości z obsługą stronicowania. Niektóre przeciążenia ImapClient.ListMessagesByPage przyjmuje PageSettings jako parametr. PageSettings zapewnia AscendingSorting właściwość, która ustawiona na false, zwraca e‑maile w kolejności malejącej.
Poniższy kod przykładu demonstruje użycie AscendingSorting właściwość PageSettings klasa do zmiany kolejności e-maili.
Zapisz wiadomości w formacie MSG
Aby zapisać e‑maile w formacie MSG, ImapClient.FetchMessage() metodę należy wywołać. Zwraca wiadomość jako instancję MailMessage klasa. Ta MailMessage.Save() metodę można następnie wywołać, aby zapisać wiadomość w formacie MSG. Poniższy fragment kodu pokazuje, jak zapisać wiadomości w formacie MSG.
Grupowanie pobranych wiadomości
ImapClient zapewnia FetchMessages metoda, która przyjmuje iterowalny zestaw numerów sekwencyjnych lub unikalnych ID i zwraca listę MailMessage. Poniższy fragment kodu demonstruje użycie FetchMessages metoda pobierająca wiadomości według numerów sekwencyjnych i unikalnego ID.
Pobierz foldery i odczytaj wiadomości rekurencyjnie
W tym artykule, większość ImapClient funkcje są używane do stworzenia aplikacji, która rekurencyjnie wyświetla wszystkie foldery i podfoldery z serwera IMAP. Zapisuje również wiadomości w każdym folderze i podfolderze w formacie MSG na lokalnym dysku. Na dysku foldery i wiadomości są tworzone i zapisywane w takiej samej strukturze hierarchicznej jak na serwerze IMAP. Poniższy fragment kodu pokazuje, jak uzyskać wiadomości oraz informacje o podfolderach w sposób rekurencyjny.
Obsługa specjalnych informacji wiadomości
Pobierz dodatkowe parametry jako informacje podsumowujące
Pobierz informacje z nagłówka List-Unsubscribe
Nagłówek List-Unsubscribe zawiera adres URL umożliwiający wypisanie się z list mailingowych, np. reklam, biuletynów itp. Aby uzyskać nagłówek List-Unsubscribe, użyj ListUnsubscribe właściwość ImapMessageInfo klasa. Poniższy przykład pokazuje użycie ListUnsubscribe właściwość umożliwiająca pobranie nagłówka List-Unsubscribe.