Here's how I tested the hotfix Aspose.Email.dll:
Starting with the AsposeTestApp sources I supplied in my original post, I edited the Project and added a Reference to the Microsoft.IO.RecyclableMemoryStream.dll and modified the other, existing Reference to specify the hotfix dll rather than the current release of Aspose.Email.dll
After building, I ran the test app at the command line with no switches:
T:\Development\Sandbox\Aspose\AsposeTestAppSourceFromZip> bin\x86\Debug\AsposeTestApp.exe usage: AsposeTestApp {chunk_count} chunk_count defaults to 20000 if omitted. Each chunk is 100KBConsumeMemory requested 20000 100KB chunks. Allocation failure occurred when idx = 19205
The type initializer for ‘Aspose.Email.Mail.MessageFormat’ threw an exception.
at Aspose.Email.Mail.MessageFormat.get_Msg()
at Aspose.Email.Mail.MailMessage.#=qMvXvgPuXSx3ZDlbMRgY7jQ==(Stream #=qwZ9llg4X$PEWn92B948F4g==,LoadOptions& #=qCDx1iBL_NwOTZHxtQKkOdw==)
at Aspose.Email.Mail.MailMessage.#=qynkIglnJHI$YFZum3j2v0DpCXIi73w04C0P7l1v73yk=(Stream #=qwZ9llg4X$PEWn92B948F4g==, LoadOptions #=qCDx1iBL_NwOTZHxtQKkOdw==)
at Aspose.Email.Mail.MailMessage.Load(Stream stream)
at Aspose.Email.Mail.MailMessage.Load(String fileName)
at AsposeTestApp.Program.Main(String[] args) in t:\Development\Sandbox\Aspose\AsposeTestAppSourceFromZip\Program.cs:line 32
Reducing 19205 slightly, I ran AsposeTestApp.exe again, but this time with 19000 on the command line:
T:\Development\Sandbox\Aspose\AsposeTestAppSourceFromZip> bin\x86\Debug\AsposeTestApp.exe 19000 usage: AsposeTestApp {chunk_count} chunk_count defaults to 20000 if omitted. Each chunk is 100KBException of type ‘System.OutOfMemoryException’ was thrown.
at System.IO.MemoryStream…ctor(Int32 capacity)
at #=qLrIs6TkKtGQgnTyqaxYoFYJqi6AhxFCUazCfb7BD5M9m90tm4fjv0tuwDKPJ0GRQ.#=qaWaBlz2ObHg88F$GxGdVzg==(UInt32 #=qui4X0fhPAaVikFSIj4Vmtw==, Int32 #=qvGrTNMRGAQ6GNRTyeRriFA==, Boolean #=qhkAVqY4ezk$EFzC7Yp1hbw==)
at #=qLrIs6TkKtGQgnTyqaxYoFYJqi6AhxFCUazCfb7BD5M9m90tm4fjv0tuwDKPJ0GRQ.#=q6mNfCfl6y4dfpsK8zi2esQ==()
at #=qLrIs6TkKtGQgnTyqaxYoFYJqi6AhxFCUazCfb7BD5M9m90tm4fjv0tuwDKPJ0GRQ.#=qtIcPRCyzw4wfk8VPf3KyGg==(Stream #=qwZ9llg4X$PEWn92B948F4g==)
at #=qLrIs6TkKtGQgnTyqaxYoFYJqi6AhxFCUazCfb7BD5M9m90tm4fjv0tuwDKPJ0GRQ…ctor(Stream #=qwZ9llg4X$PEWn92B948F4g==)
at Aspose.Email.Outlook.MapiMessageReader…ctor(Stream stream)
at Aspose.Email.Mail.MailMessage.#=qcDIsnTl2Xpysxrnaqgob0g==(Stream #=qwZ9llg4X$PEWn92B948F4g==,MsgLoadOptions #=qCDx1iBL_NwOTZHxtQKkOdw==)
at Aspose.Email.Mail.MailMessage.#=qynkIglnJHI$YFZum3j2v0DpCXIi73w04C0P7l1v73yk=(Stream #=qwZ9llg4X$PEWn92B948F4g==, LoadOptions #=qCDx1iBL_NwOTZHxtQKkOdw==)
at Aspose.Email.Mail.MailMessage.Load(Stream stream)
at Aspose.Email.Mail.MailMessage.Load(String fileName)
at AsposeTestApp.Program.Main(String[] args) in t:\Development\Sandbox\Aspose\AsposeTestAppSourceFromZip\Program.cs:line 32
As you can see I get an OutOfMemoryException thrown by a MemoryStream object.
I further reduced 19000 to 18500 and ran AsposeTestApp again - and there was another OutOfMemoryException:
Exception of type 'System.OutOfMemoryException' was thrown. at Aspose.Email.Outlook.MapiProperty..ctor(String name, Int64 tag, Int64 signed, Byte[] data) at #=q4L1nJgJ6IWe_ooj_xtUz6kismHrfEueUvSLyjZdtAXxH_xQPpuRBriTdB2YNLXP_.#=qKpweR87dpcMET_JxuAKASA==(#=qpfUO7xEgVzsISqcfZHNdXxUbJwBZDbXeNmoUzepLfmoj2jsT04usGDiq$1T02tim #=qsWoMZR0QHo0cXj$3PXTySQ==, #=qHEiFCs4xAScxcDS_du9T8Sy7WDhExtCNbGIVJp8OyY5tS$v_XE9PcjW2V9rqQhZy #=q7NT3lUcsthT1dixRqTdebA==, #=q0vpWe5mP5SSG0VFZO_DVVadyYncmssfk_IubhttTKnzwAxpFxcTC5wGxLA2R5QB7 #=qdpFoWmNIE12NLYWtfpeQ3Q==) at #=qXKOiAG0TeAbXQuhahetODjn7_yKB5SlrtBAFzVsOxqD0fc_VKZ4ijXvVFyLTP6Op.#=qKpweR87dpcMET_JxuAKASA==(#=qpfUO7xEgVzsISqcfZHNdXxUbJwBZDbXeNmoUzepLfmoj2jsT04usGDiq$1T02tim #=qsWoMZR0QHo0cXj$3PXTySQ==, #=qHEiFCs4xAScxcDS_du9T8Sy7WDhExtCNbGIVJp8OyY5tS$v_XE9PcjW2V9rqQhZy #=qNnrXHjRAOl6wvjXvBms_kA==, #=q3i4n2XRup$68Z20IixAGw7wWIXx_PEJ$pmqzvlAsrxHDLxnZBMSLJ2qKDlVqatGb #=qxHxv1X7pP$z7yTIp__om5A==, #=q0vpWe5mP5SSG0VFZO_DVVadyYncmssfk_IubhttTKnzwAxpFxcTC5wGxLA2R5QB7 #=qdpFoWmNIE12NLYWtfpeQ3Q==) at #=qjg5UibCNqZAhtYEH$jJ2LZh7DIPNt_l6xVrPP2JNFkKQ55VEzEIY59oJ9C7ncvUv.#=qKpweR87dpcMET_JxuAKASA==(#=qpfUO7xEgVzsISqcfZHNdXxUbJwBZDbXeNmoUzepLfmoj2jsT04usGDiq$1T02tim #=qsWoMZR0QHo0cXj$3PXTySQ==, #=qHEiFCs4xAScxcDS_du9T8Sy7WDhExtCNbGIVJp8OyY5tS$v_XE9PcjW2V9rqQhZy #=q7NT3lUcsthT1dixRqTdebA==, #=q0vpWe5mP5SSG0VFZO_DVVadyYncmssfk_IubhttTKnzwAxpFxcTC5wGxLA2R5QB7 #=qdpFoWmNIE12NLYWtfpeQ3Q==) at Aspose.Email.Outlook.MapiMessageReader.ReadMessage() at Aspose.Email.Mail.MailMessage.#=qcDIsnTl2Xpysxrnaqgob0g==(Stream #=qwZ9llg4X$PEWn92B948F4g==,MsgLoadOptions #=qCDx1iBL_NwOTZHxtQKkOdw==) at Aspose.Email.Mail.MailMessage.#=qynkIglnJHI$YFZum3j2v0DpCXIi73w04C0P7l1v73yk=(Stream #=qwZ9llg4X$PEWn92B948F4g==, LoadOptions #=qCDx1iBL_NwOTZHxtQKkOdw==) at Aspose.Email.Mail.MailMessage.Load(Stream stream) at Aspose.Email.Mail.MailMessage.Load(String fileName) at AsposeTestApp.Program.Main(String[] args)
It's worth noting that the RecyclableMemoryStream assembly hasn't even been loaded at this point.
Based on this very limited testing I'm sorry to have to report that the defect is not fixed, because the Aspose.Email.dll still contains MemoryStream objects that need to be replaced by RecyclableMemoryStream objects.