OLM save message to stream

Hello,
What is the global ost unique ID of MapiMessage in OlmStorage?

Once we have it, how to save a single message from OLM to stream?

Using MyStorage As Email.Storage.Olm.OlmStorage = New Email.Storage.Olm.OlmStorage(path to olm)

MyStorage . xxSaveMessagexx (uniqueMsgID , blah as MemoryStream)

@australian.dev.nerds

A ticket EMAILNET-40683 has been logged for your requirement in our issue tracking system. You will be informed via this forum thread once there is an update available on it.

Sorry but I still don’t know how to deal with OLM in real app, for both questions above :frowning:(

EntryIdString
and
Save to stream from OLM storage

@australian.dev.nerds

We are working your requirement EMAILNET-40683 and will inform you once there is an update available on it.

@australian.dev.nerds

Since the OLM format is undocumented, we are investigating its internal structure in order to add this feature.
OLM doesn’t support unique ID in the form user request. There is an index that contains file offset by which you can find the item. Also, each item has a unique path+name, such as:

Accounts/sepantasoft@outlook.com/com.microsoft.__Messages/Sent Items/message_00001.xml

Although it is unique, it’s hardly convenient to use it as a unique ID.

As a workaround, we can generate and assign to each item an unique ID that you can use to retrieve messages. But these IDs will only work with Aspose.Email.

Please let us know if this workaround will appropriate for you.

1 Like

Hello,
First of all, thank you very much for your great work, I agree when a format is not documented, it’s a nightmare to reverse engineer it, anyway, yes the only thing developers will need when reading storages, is a uniqueID for each item as a reference for next read attempts.
No difference if that uniqueID really exists inside the storage or you generated a value to make the life easier for the developer.
So, the short answer is a big yes, that will be life saving.
But the question is that can you please be so kind and apply the same uniqueID to other storage readers (which natively don’t have such feature) like Mbox/Mboxrd Reader, Tgz Reader and Nsf Reader too?
Because when dealing with storages, this is a big headache to overcome :slight_smile:

@australian.dev.nerds

Thanks for sharing the feedback. We have logged the shared detail in our issue tracking system.

@australian.dev.nerds

We will definitely consider applying this way to Mbox/Mboxrd Reader and Tgz Reader. There will probably no problem to implement it.

As for NSF, we are not sure of the result. As already mentioned in the documentation, the NSF implementation is quite limited.

In addition, we still have not solved the problem of getting folders in NSF. This is because the NSF format is very closed, and problematic for reverse engineering, because we do not know the algorithms used to encrypt the data. Please note that the implementation is basic and not good for active use.

Hello,
Please kindly forward this to the developer(s):
Once the “unique ID” property is added to the storage readers (Olm/Mbox/Tgz) can you please also add such function:
ExtractMessage ( newly added unique ID as string)
So we can directly save a single message using that unique ID? (so no need to loop through all again)
Best :slight_smile:

@australian.dev.nerds

We have logged this requirement in our issue tracking system as EMAILNET-40831. We will inform you once there is an update available on it.

Just noting :slight_smile:

Hello, just checking if this Tgz FolderInfo / TgzFolder + TgzMessageInfo / Tgz.ItemID / TgzReader.ExtractMessage architecture is still on the table? :slight_smile:

@australian.dev.nerds,

This feature has not been added to TgzReader yet.