Browse our Products

Aspose.Email for Java 23.7 Release Notes

All Changes

KeySummaryCategory
EMAILNET-40925Add delete by Id method to PersonalStorageFeature
EMAILNET-41048Add new features to CalendarReaderFeature
EMAILNET-40902Add PersonalStorage.StoragePreProcess event to get the name of storageFeature
EMAILNET-41090Add CalendarReader.Version propertyEnhancement
EMAILNET-41058Add MapiMessage.FromMailMessage Input Stream OverloadEnhancement
EMAILNET-41073VCF format does not support a NOTE field value as HTMLEnhancement
EMAILNET-41109Support creating MapiTask in ASCII formatEnhancement
EMAILNET-40876Cannot Access Nested Error Code From EWS Related ExceptionsEnhancement
EMAILNET-41078Preamble property is null after removing the signatureBug
EMAILNET-41065Minor problem in exception message stringBug
EMAILNET-41097No Categories with GraphClientBug
EMAILNET-41118Contact from WebDav: Index was out of range exceptionBug
EMAILNET-41092Issues with iCloud contact parsingBug
EMAILNET-41098Issue with Exchange Calender Appointments DetailsBug
EMAILNET-41091DetectFileFormat identifies zip as icsBug
EMAILNET-41103Setting IMAP Flags is generating numerous exceptionsBug
EMAILNET-41116IsMailingAddress is removed for contactsBug
EMAILNET-41106Differences in the time zones when save eml from olmBug
EMAILNET-41088Missing body part when converting from msg to pdfBug
EMAILNET-41105ReadReceiptRequest for Aspose.Mail.MailmessageBug
EMAILJAVA-35189Attanchment Not Extracted From EmailBug
EMAILJAVA-35190Email inline image sent as attachmentBug
EMAILJAVA-35191Eml return-pathBug

New Features

Effortlessly Delete Items from PST

We have added a new method, deleteItem(string entryId), to the PersonalStorage class. This method provides a way to delete items (folders or messages) from a Personal Storage Table (PST) using the unique entryId associated with the item.

To delete an item from a PST, ensure that you have the appropriate entryId available for the item. Then, call the deleteItem method and pass the entryId as a parameter.

Code Example:

var pst = PersonalStorage.fromFile("sample.pst");

// ...

pst.deleteItem(entryId);

// ...

Please Note:

  • This method will permanently delete the item from the PST and cannot be undone. Exercise caution when using this method to avoid accidental data loss.
  • As per standard conventions, ensure that the entryId is valid and corresponds to an existing item within the PST. Otherwise, an exception will be thrown.
  • It is advisable to have a backup of the PST or implement suitable measures to recover deleted items if needed.

Enhanced Event Handling and PST Splitting Functionality in PersonalStorage class

The additions enhance the functionality and flexibility of the PersonalStorage class, providing improved event handling and PST storage splitting capabilities.

API Changes:

  • event StorageProcessingEventHandler storageProcessing The event has been added to the PersonalStorage class. It occurs before the storage is processed, specifically before processing the current storage in mergeWith or splitInto methods. This event provides an opportunity to execute custom logic or handle certain operations before the storage processing occurs.

  • class StorageProcessingEventArgs The class has been introduced to provide data for the PersonalStorage.StorageProcessing event. It contains the following member:

    • StorageProcessingEventArgs.FileName The FileName property allows you to retrieve the name of the PST file. For mergeWith method it will be a name of the current pst to be merged with the main one, and for splitInto method it will be a name of the current part.
  • splitInto(long chunkSize, String partFileNamePrefix, String path) A new overload method, SplitInto, has been added to the PersonalStorage class. This method allows the splitting of the PST storage into smaller-sized parts. It takes the following parameters:

    • chunkSize: The approximate size of each chunk in bytes.
    • partFileNamePrefix: The prefix to be added to the filename of each part of the PST. If provided, the prefix will be added to the beginning of each file name. If not provided (null or empty), the PST parts will be created without a prefix.
    • path: The folder path where the chunks will be created.

    The filename of each part follows the template: {prefix}part{number}.pst, where {prefix} represents the filename prefix (if provided), and {number} represents the number of the chunk file.

Code Examples:

var pst = PersonalStorage.fromFile("sample.pst");

// ...

pst.StorageProcessing.add(new StorageProcessingEventHandler() {
    @Override
    public void invoke(Object sender, StorageProcessingEventArgs args) {
        System.out.println("Storage processing event raised for file: " + args.getFileName());
    }
});

// ...

pst.splitInto(5000000, "prefix_", outputFolderPath);

Please Note:

  • Ensure that the path provided in the SplitInto method is valid and accessible. An ArgumentException will be thrown if the path parameter is null or empty.
  • Take into consideration the minimum size of a PST file when specifying the chunk size. If the chunk size is less than the minimum size of a PST file, an ArgumentException will be thrown.

Enhanced Calendar Handling in CalendarReader Class

The new properties and a method in the public API of the CalendarReader class were added. These additions enhance the functionality of the this class, providing improved calendar event handling capabilities.

API Changes:

  • CalendarReader.Count The Count property has been added to the CalendarReader class. It allows you to retrieve the number of Vevent components (events) present in the calendar, making it easier to track the total number of events.
  • CalendarReader.IsMultiEvents The property has been introduced to determine whether the calendar contains multiple events. This property provides a boolean value indicating whether the calendar contains more than one event, aiding in identifying calendars with single or multiple events.
  • CalendarReader.Method The Method property has been included to obtain the iCalendar method type associated with the calendar object. It returns the method type, such as “REQUEST,” “PUBLISH,” or “CANCEL,” providing valuable insights into the purpose of the calendar.
  • CalendarReader.Version Gets the Version of iCalendar.
  • CalendarReader.loadAsMultiple() The method enables the loading of a list of events from a calendar containing multiple events. It returns a list of Appointment objects, allowing easy access and processing of each event individually.

Code Examples:

var reader = new CalendarReader(fileName);
System.out.println("Calendar contains " + reader.getCount() + " events");
System.out.println("The Version of the calendar is " + reader.getVersion());
System.out.println("The Method of the calendar is " + reader.getMethod());
System.out.println("Is calendar contains contains multiple events? - " + reader.isMultiEvents());
List<Appointment> appointments = reader.loadAsMultiple();