Läs MS Outlook PST-filer i Java

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 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.

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.

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.

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.

Se även