PST (Personal Storage Table) är ett välkänt filformat som används för lagringsändamål av olika Microsoft-program som MS Outlook, Exchange och Windows Messaging. PST-filer kan lagra meddelanden, kontakter och information om andra objekt som kalendrar, händelser etc. I vissa fall kan du behöva analysera en PST-fil och extrahera data från den programmatiskt. För att uppnå det visar den här artikeln hur man läser Outlook PST-filer i Java. Med hjälp av kodprover lär du dig hur du extraherar mappars information, läser mejl och hämtar kontakter från en PST-fil.
- Java API för att läsa Outlook PST-fil
- Läs en Outlook PST-fil i Java
- Läs e-postmeddelanden från en PST-fil
- Extrahera kontakter från en PST-fil
Java API för att bearbeta Outlook PST-fil - Gratis nedladdning
Aspose.Email for Java är ett populärt och funktionsrikt e-postbearbetnings-API för att skapa och skicka e-post. Dessutom låter den dig arbeta med populära e-postklienter och lagringsfilformat. I den här artikeln kommer vi att använda Aspose.Email för Java för att läsa meddelanden och annan information från PST-filer. Du kan antingen ladda ner API:et eller installera det med hjälp av följande Maven-konfigurationer.
Förvar:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
Beroende:
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.3</version>
<classifier>jdk16</classifier>
</dependency>
Läs en Outlook PST-fil i Java
Följande är stegen för att läsa en PST-fil och extrahera dess information i Java.
- Ladda PST-filen med metoden PersonalStorage.fromFile().
- Hämta mappsamlingen i PST med metoden PersonalStorage.getRootFolders().getSubFolders().
- Hämta information om mapparna som namn, antal objekt osv.
Följande kodexempel visar hur man läser en PST-fil och hämtar mapparinformation i Java.
// Ladda Outlook PST-filen
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");
// Få information om mapparna
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// Bläddra igenom varje mapp för att visa information
for (int i = 0; i < folderInfoCollection.size(); i++) {
FolderInfo folderInfo = (FolderInfo) folderInfoCollection.get_Item(i);
System.out.println("FolderId: " + folderInfo.getEntryIdString());
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("Total items: " + folderInfo.getContentCount());
System.out.println("Total unread items: " + folderInfo.getContentUnreadCount());
System.out.println("-----------------------------------");
}
Java Läs e-postmeddelanden från en PST
Följande är stegen för att läsa e-postmeddelanden från en PST-fil i Java.
- Ladda PST-filen med metoden PersonalStorage.fromFile().
- Gå till rotmappen med metoden PersonalStorage.getRootFolder().
- Hämta meddelandesamling från varje undermapp med metoden FolderInfo.getContents().
- Gå igenom meddelandena i samlingen och läs varje meddelandes fält.
Följande kodexempel visar hur man extraherar meddelanden från en PST-fil i Java.
// Ladda Outlook PST-filen
PersonalStorage pst = PersonalStorage.fromFile(path);
// Hämta visningsformatet för PST-filen
System.out.println("Display Format: " + pst.getFormat());
// Få information om mappar och meddelanden
FolderInfo folderInfo = pst.getRootFolder();
// Anropa den rekursiva metoden för att extrahera msg-filer från varje mapp
extractMsgFiles(folderInfo, pst);
// Detta är en rekursiv metod för att visa innehållet i en mapp
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
// visa mappnamnet
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("==================================");
// Gå igenom alla meddelanden i den här mappen
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (MessageInfo messageInfo : messageInfoCollection) {
System.out.println("Saving message {0} ...." + messageInfo.getSubject());
// Hämta meddelandet i MapiMessage-instansen
MapiMessage message = pst.extractMessage(messageInfo);
// Spara detta meddelande på disk i msg-format
message.save(message.getSubject().replace(":", " ") + ".msg");
// Spara detta meddelande för att streama i msg-format
ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
message.save(messageStream);
}
// Anropa denna metod rekursivt för varje undermapp
if (folderInfo.hasSubFolders() == true) {
for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
extractMsgFiles(subfolderInfo, pst);
}
}
}
Läs kontakter från en PST i Java
I vissa fall kan du behöva extrahera kontakternas information lagrad i en PST-fil. Följande steg visar hur du kommer åt kontakterna i en PST-fil i Java.
- Ladda PST-filen med metoden PersonalStorage.fromFile().
- Få referens till kontaktmappen med metoden PersonalStorage.getRootFolder().getSubFolder(“Contacts”).
- Få insamling av kontakter med metoden FolderInfo.getContents().
- Gå igenom kontaktsamlingen och läs varje kontakt eller spara den.
Följande kodexempel visar hur man extraherar kontakter från en PST-fil i Java.
// Ladda Outlook PST-filen
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");
// Hämta mappen Kontakter
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Gå igenom alla kontakter i den här mappen
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Få kontaktinformationen
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Visa en del innehåll på skärmen
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// Spara på disk i MSG-format
if (contact.getNameInfo().getDisplayName() != null) {
MapiMessage message = pst.extractMessage(messageInfo); // Get rid of illegal characters that cannot be used as a file name
String messageName = message.getSubject().replace(":", " ").replace("\\", " ").replace("?", " ").replace("/", " ");
message.save(messageName + ".msg");
}
}
Java API för att läsa Outlook PST-fil - Skaffa en gratis licens
Du kan prova Aspose.Email för Java gratis genom att skaffa en tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du läser PST-filer programmatiskt i Java. Dessutom har du sett hur du extraherar mappinformation, hämtar e-postmeddelanden och hämtar kontakter från en PST-fil i Java. Dessutom kan du utforska mer om Aspose.Email för Java med hjälp av dokumentation. Om du skulle ha några frågor eller funderingar får du gärna meddela oss via vårt forum.