PersonalStorage.GetMessage() can only retrieve the first 1000 messages

Here is my code:


void ReadPstFolders(PersonalStorage pst, FolderInfoCollection folders)
{
if (folders == null)
return;

foreach (FolderInfo folder in folders)
{
if (folder.DisplayName == "Deleted Items")
continue;

int i = 0;
foreach (MessageInfo m in folder.GetContents())
{
++i;
subUrl = "@" + m.EntryIdString;
try
{
ReadEmail(pst.GetMessage(m));
}
catch (Exception e)
{
// **********************
// It always reaches here when i is 1000
e = e;
}
}

ReadPstFolders(pst, folder.GetSubFolders());
}
}


This is a pretty important bug. Please set HIGH Priority to it. Thanks.


Just upgrade from version 6.7 to 6.8. Same problem.


Please don’t put excuse here to say I’m not a paid priority customer. Because this is very visible bug, I think you should put the fix in the next release. Thanks.

Hi,

Thank you for inquiry.

Does it happen with all PST files with above 1000 messages in a folder? I just extracted over 1000 and 2000 messages and it did correctly. The evaluation version has limitation of 50 message extraction per folder, but with licensed version, it should extract all.

Could you please try ReadEmail(pst.ExtractMessage(m)); instead of ReadEmail(pst.GetMessage(m)); because the GetMessage() method is marked as obsolete, I hope it may solve the issue.

If it still throws exception, there might be some other issue with the message extraction, please try creating a new PST with just that message at 1000th or other number which throws exception and see if you can reproduce this issue. Otherwise, we will be requiring the sample PST file which causes the problem.

To share the file, you may zip/upload to banckle and share the link to me using “Contact” --> “send saqib.razzaq an email” button on this thread.

  1. ExtractMessage() doesn’t solve the problem

    2. I cannot send you the pst file, because it contains all my REAL emails. Could you send me a Dianosis dll, which can contains some debug messages? Or we can do screen sharing.

Hi,

Could you please identify the message on which ExtractMessage() fails? If possible, please save this specific message to disk in MSG format and send to us.

Screen sharing will not help, because it is possible that Aspose could not read some complex messages and we need the source files to reproduce the issue at our end.

Attached please find output debug information:


1. Before message #998, all looks good. On message #999, it suddenly jumps many messages from May 31th to June 24th. Then it crashes on message #1000, throw error message “Could not read message”

Exception details attached.

Hi,

Thanks for the detailed screenshots.

I am afraid, it is not possible for us to find the issue using this information. We need the PST file to identify and fix the issue. Please first try creating a new PST and moving the single 1000th message in it and see if the same error occurs. Otherwise, we will be requiring the full PST.

We use the customer’s data files for locating and fixing the issues and delete the data afterwards. You may refer to End User License Agreement - About - aspose.com for non-disclosure clause.

Check the third screenshot, which tells you where is problem:


https://forum.aspose.com/t/41757

Thanks, we will check if this error message helps in finding the issue. I will get back to you with further feedback.

Hi,

Do you see anything different in this specific message, for example the language it is written in and the encoding of the message etc?

I am sorry, we could not get any idea about the root cause of the issue. The PST or at least the source MSG is required to further look into it.


I don’t know which message I should check. I have thousands of them.


Once again, they are my real emails, I cannot send them to you. I just wonder if you can check it on my computer using screen sharing. Thanks.

Hi,

Please only check the message on which exception is thrown:

foreach (MessageInfo m in folder.GetContents())

{
++i;
subUrl = “@” + m.EntryIdString;
try
{
ReadEmail(pst.GetMessage(m));
}
catch (Exception e)
{
// **********************
// It always reaches here when i is 1000
e = e;
}
}

In the catch() block, check the MessageInfo.Subject, SenderRepresentativeName and DisplayTo properties to find out the message. It would be helpful if you save this message from Outlook to disk in MSG format and send to us or at lest please take the screenshot of the full message.