Ekstrakcja emaili za pomocą 5 najpopularniejszych metod w Javie

Podczas tworzenia aplikacji do obsługi emaili, ustanowienie efektywnego mechanizmu do ekstrakcji wiadomości z inboxa jest niezbędne dla niezawodnej i szybkiej dostawy oraz dostępności. Jest to szczególnie doceniane przez organizacje i firmy zajmujące się rosnącą ilością przychodzących wiadomości. W tym artykule zbadamy, jak wykorzystać moc biblioteki Java do pobierania emaili za pomocą POP3, IMAP, EWS, Graph API oraz z offline’owych magazynów skrzynek pocztowych w różnych formatach na przykładzie pliku pst. Te podejścia oferują kompleksowe rozwiązanie do ekstrakcji emaili, zwiększając możliwości Twojej aplikacji Java.

Java API do ekstrakcji wiadomości

Aby ekstraktować wiadomości z serwera lub magazynu skrzynek pocztowych w Javie, użyjemy Aspose.Email dla Javy. Aspose.Email to solidna biblioteka, która umożliwia programistom Javy łatwą pracę z wiadomościami email, folderami i serwerami pocztowymi. Oferuje wsparcie dla szerokiej gamy formatów emailowych, w tym MSG, EML, PST i OST, co czyni ją wszechstronnym wyborem do zadań związanych z emailami. Możesz łatwo wdrożyć API w swoim projekcie, jeśli pobierzesz je lub zainstalujesz za pomocą poniższych konfiguracji Maven.

Repozytorium:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>

Zależność:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>23.11</version>
    <classifier>jdk16</classifier>
</dependency>

Pobierz emaile za pomocą POP3

POP3 (Post Office Protocol 3) to powszechnie używany protokół do pobierania emaili. Umożliwia pobieranie wiadomości z serwera pocztowego na lokalne urządzenie. Z Aspose.Email możesz łatwo pobierać emaile za pomocą POP3, korzystając z poniższego fragmentu kodu z krokami:

  1. Użyj klasy Pop3Client, aby utworzyć obiekt, przekazując niezbędne właściwości do nawiązania połączenia z serwerem POP3.
  2. Włącz automatyczny wybór odpowiedniego protokołu zabezpieczeń, ustawiając opcje zabezpieczeń na SecurityOptions.Auto.
  3. Pobierz kolekcję wiadomości w skrzynce pocztowej, wywołując metodę listMessages na obiekcie Pop3Client.
  4. Iteruj po kolekcji messageInfoCol.
  5. Dla każdego obiektu Pop3MessageInfo wywołaj metodę fetchMessage na obiekcie Pop3Client, przekazując numer sekwencyjny uzyskany z messageInfo.getSequenceNumber().
  6. Wewnątrz pętli możesz pracować z pobraną wiadomością w zmiennej eml, na przykład czytając jej zawartość lub zapisując ją do pliku.
Pop3Client client = new Pop3Client("pop3.server.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
try {
Pop3MessageInfoCollection messageInfoCol = pop3Client.listMessages();
for (Pop3MessageInfo messageInfo : messageInfoCol) {
MailMessage eml = client.fetchMessage(messageInfo.getSequenceNumber());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}

Pobierz emaile za pomocą IMAP

IMAP (Internet Message Access Protocol) to standardowy protokół do pobierania emaili, który pozwala klientom emailowym uzyskiwać dostęp do i zarządzać wiadomościami przechowywanymi na zdalnym serwerze pocztowym. W przeciwieństwie do POP3, który zazwyczaj pobiera emaile na lokalne urządzenie, IMAP przechowuje wiadomości na serwerze, co czyni go idealnym do synchronizacji na wielu urządzeniach i zdalnego dostępu. Aspose.Email umożliwia bezproblemową integrację tego protokołu w Twojej aplikacji. Zobacz poniższy przykład kodu z krokami, aby pobrać wiadomości:

  1. Utwórz obiekt ImapClient, przekazując nazwę hosta, nazwę użytkownika i hasło serwera IMAP.
  2. Ustaw opcje zabezpieczeń klienta na SecurityOptions.Auto, co umożliwia automatyczny wybór odpowiedniego protokołu zabezpieczeń.
  3. Wywołaj metodę listMessages na obiekcie ImapClient, aby pobrać kolekcję obiektów ImapMessageInfo reprezentujących wiadomości w skrzynce pocztowej.
  4. Iteruj po kolekcji messageInfoCol.
  5. Dla każdego obiektu ImapMessageInfo wywołaj metodę fetchMessage na obiekcie ImapClient, przekazując unikalny identyfikator uzyskany z messageInfo.getUniqueId().
  6. Wewnątrz pętli możesz pracować z pobraną wiadomością w zmiennej eml, na przykład czytając jej zawartość lub zapisując ją do pliku.
ImapClient client = new ImapClient("localhost", "user", "password");
client.setSecurityOptions(SecurityOptions.Auto);
try {
ImapMessageInfoCollection messageInfoCol = client.listMessages();
for (ImapMessageInfo messageInfo : messageInfoCol) {
MailMessage eml = client.fetchMessage(messageInfo.getUniqueId());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}

Pobierz wiadomości z serwera MS Exchange

Protokół Exchange Web Services (EWS) to potężny i wszechstronny protokół komunikacyjny opracowany przez Microsoft do uzyskiwania dostępu i zarządzania danymi w ramach Microsoft Exchange Server i Office 365. Aspose.Email oferuje szereg funkcji do pracy z skrzynkami pocztowymi i wiadomościami Exchange, umożliwiając programistom budowanie aplikacji i usług, które bezproblemowo integrują się z danymi w Microsoft Exchange Server i Office 365, co czyni je cennymi narzędziami do nowoczesnej komunikacji biznesowej i współpracy. Poniżej przedstawiamy skuteczną integrację naszego API z protokołem EWS w prostym fragmencie kodu z krokami:

  1. Utwórz obiekt IEWSClient, wywołując metodę getEWSClient na klasie EWSClient i przekazując URL punktu końcowego EWS serwera Exchange oraz nazwę użytkownika i hasło do uwierzytelnienia.
  2. Wywołaj metody getMailboxInfo() i getInboxUri() na obiekcie klienta, aby uzyskać URI folderu Skrzynka odbiorcza.
  3. Wywołaj metodę listMessages() na obiekcie klienta, przekazując URI Skrzynki odbiorczej, aby pobrać kolekcję obiektów ExchangeMessageInfo reprezentujących wiadomości w Skrzynce odbiorczej.
  4. Iteruj po kolekcji messageInfoCol.
  5. Dla każdego obiektu ExchangeMessageInfo wywołaj metodę getUniqueUri(), aby uzyskać unikalne URI wiadomości.
  6. Wywołaj metodę fetchMessage na obiekcie klienta, przekazując strMessageURI, aby pobrać konkretną wiadomość.
  7. Wewnątrz pętli możesz pracować z pobraną wiadomością w zmiennej eml, na przykład czytając jej zawartość lub zapisując ją do pliku.
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "UserName", "Password");
ExchangeMessageInfoCollection messageInfoCol = client.listMessages(client.getMailboxInfo().getInboxUri());
for (ExchangeMessageInfo msgInfo : (Iterable<ExchangeMessageInfo>) messageInfoCol) {
String strMessageURI = msgInfo.getUniqueUri();
MailMessage eml = client.fetchMessage(strMessageURI);
}

Microsoft Graph do ekstrakcji wiadomości z serwera

Microsoft Graph API to REST API udostępnione przez Microsoft do uzyskiwania dostępu do różnych usług Microsoft, w tym Outlook i Office 365. Instancja klasy IGraphClient, udostępniona przez Aspose.Email dla Javy, zajmuje się budowaniem żądań, wysyłaniem ich do Microsoft Graph API i przetwarzaniem odpowiedzi. Ta integracja zapewnia zestaw funkcji do efektywnej obsługi emaili. Poniższy przykład kodu demonstruje funkcjonalność pobierania wiadomości wspieraną przez następujące kroki:

  1. Utwórz obiekt IGraphClient, wywołując metodę getClient na klasie GraphClient i przekazując obiekt tokenProvider do uwierzytelnienia z Microsoft Graph API.
  2. Wywołaj metodę listMessages na obiekcie IGraphClient, przekazując GraphKnownFolders.Inbox, aby pobrać kolekcję obiektów GraphMessageInfo reprezentujących wiadomości w Skrzynce odbiorczej.
  3. Iteruj po kolekcji messageInfoColl.
  4. Dla każdego obiektu GraphMessageInfo wywołaj metodę fetchMessage na obiekcie IGraphClient, przekazując metodę getItemId jako parametr w celu pobrania konkretnej wiadomości.
  5. Wewnątrz pętli możesz pracować z pobraną wiadomością w zmiennej message, na przykład czytając jej zawartość lub zapisując ją do pliku za pomocą klasy MapiMessage.
IGraphClient client = GraphClient.getClient(tokenProvider);
GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}

Ekstrakcja wiadomości z offline’owego magazynu skrzynek pocztowych

Offline’owy magazyn skrzynek pocztowych odnosi się do przechowywania wiadomości email i powiązanych danych na lokalnym urządzeniu lub komputerze, umożliwiając użytkownikom dostęp do ich emaili bez aktywnego połączenia z internetem. Nasza progresywna biblioteka pozwala na rozwijanie klientów emailowych i aplikacji, które umożliwiają użytkownikom pracę z ich emailami nawet wtedy, gdy nie są połączeni z serwerem emailowym lub internetem. Poniższy fragment kodu z krokami pokaże Ci, jak wykorzystać moc biblioteki do otwierania pliku magazynu osobistego Outlook (PST), uzyskiwania dostępu do folderu “Skrzynka odbiorcza” i ekstrakcji każdej wiadomości z niego.

  1. Utwórz obiekt PersonalStorage, wywołując metodę fromFile na klasie PersonalStorage i przekazując ścieżkę pliku pliku PST (“storage.pst”).
  2. Uzyskaj dostęp do folderu głównego pliku PST za pomocą metody getRootFolder na obiekcie PersonalStorage.
  3. Uzyskaj folder “Skrzynka odbiorcza” z folderu głównego, używając metody getSubFolder, przekazując “Skrzynka odbiorcza” jako nazwę folderu.
  4. Iteruj po wiadomościach w folderze Skrzynka odbiorcza.
  5. Dla każdego obiektu MessageInfo w kolekcji folder.enumerateMessages() wywołaj metodę extractMessage na obiekcie PersonalStorage, przekazując parametr messageInfo, aby ekstraktować konkretną wiadomość.
  6. Wewnątrz pętli możesz pracować z wyekstrahowaną wiadomością w zmiennej msg, na przykład czytając jej zawartość lub przetwarzając jej metadane za pomocą klasy MapiMessage.
PersonalStorage pst = PersonalStorage.fromFile("storage.pst");
FolderInfo folder = pst.getRootFolder().getSubFolder("Inbox");
for (MessageInfo messageInfo : folder.enumerateMessages()) {
MapiMessage msg = pst.extractMessage(messageInfo);
}

Podsumowanie

W tym artykule nauczyliśmy się, jak wykorzystać moc Aspose.Email dla Javy do pobierania emaili. Z wsparciem dla POP3, IMAP, EWS, Graph API i offline’owego magazynu skrzynek pocztowych, biblioteka umożliwia dostosowanie funkcjonalności Twojej aplikacji do spełnienia określonych potrzeb. Niezależnie od tego, czy rozwijasz aplikację kliencką, narzędzie integracyjne, czy własne rozwiązanie, nasze API Java wyposaża Cię w narzędzia do stworzenia bezproblemowego i efektywnego doświadczenia w obsłudze wiadomości. Możesz zbadać inne funkcje Aspose.Email korzystając z dokumentacji. Możesz także zadać pytania na naszym forum.

Zobacz także