Closed seeker25 closed 7 years ago
You are correct, that is not yet implemented due to the lack of spare time :-)
It's alright, I might have something working here in a bit.. Stay tuned haha.
Can you give me your name so that I can give you credits for your work?
Sure Travis Semple
On Wed, Sep 27, 2017 at 9:08 AM, Kees notifications@github.com wrote:
Can you give me your name so that I can give you credits for your work?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sicos1977/MsgKit/issues/15#issuecomment-332572967, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUpzVXrWs6dNUpk42VYQibdXoFwrZgfks5smnL1gaJpZM4PeSm- .
Later this week I will cleanup the code a little bit and expand the demo tool so that users can also create appointments from it. I hope it was not to hard to understand my way of coding :-)
No not at all. Made sense to me entirely, just took a little with the debugger to figure out.
I did nuke a couple structures though, because I implemented the NamedPropertys by ID instead of by name (had a working .msg file i was referencing that used ID instead of name).
It needs a bit of cleanup and refactor as well, plus the spec was confusing (there was some conflicting info)
On Wed, Sep 27, 2017 at 9:40 AM, Kees notifications@github.com wrote:
Later this week I will cleanup the code a little bit and expand the demo tool so that users can also create appointments for it. I hope it was not to hard to understand my way of coding :-)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sicos1977/MsgKit/issues/15#issuecomment-332582284, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUpzSuq4JZDi_w0hbZraVOjAyZ3uXZdks5smnp-gaJpZM4PeSm- .
Yeah Microsoft has good documentation but some documentation says A and another one says B about the exact same property. It took me some reverse engineering to figure out how to produce a MSG file that Outlook was willing to open. I had to do a lot of attempts before Outlook stopped crashing :-)
I used the structured storage explorer from OpenMCDF (https://github.com/ironfede/openmcdf/tree/master/sources/Structured%20Storage%20Explorer) to compare the MSG files (one that was produced by Outlook and one that I did produce). I also used Outlook Spy to look somewhat deeper into the properties (http://www.dimastr.com/outspy/home.htm)
Yeah it took me a day or two to finally catch on to use OpenMCDF (i saw in the spec they were viewing by streams and kept finding crap tools that wouldn't read the streams correctly). As soon as i found that, it wasn't too bad. I haven't tried using Outlook Spy yet.. but i'll give it a shot.
What are you using the .msg files for? Just curious.
I'm trying to integrate data from Microsoft Dynamics CRM into Microsoft Outlook using appointments.
Thanks to your tool and a bit of work I can fully automate population of a meeting inside of a .msg file....
Still need an Addin to recreate the .msg file to be able to send AND.. still need an HTML/MEDIA to RTF converter for the body (all appointments use RTF unfortunately for backwards compatability, plus any HTML to RTF converts suck really except for 1 paid one.. none of them do styles or table styling)
But that's the next project i'm working on :P
On Wed, Sep 27, 2017 at 9:55 AM, Kees notifications@github.com wrote:
Yeah Microsoft has good documentation but some documentation says A and another one says B about the exact same property. It took me some reverse engineering to figure out how to produce a MSG file that Outlook was willing to open. I had to do a lot of attempts before Outlook stopped crashing :-)
I used the structured storage explorer from OpenMCDF ( https://github.com/ironfede/openmcdf/tree/master/sources/ Structured%20Storage%20Explorer) to compare the MSG files (one that was produced by Outlook and one that I did produce). I also used Outlook Spy to look somewhat deeper into the properties (http://www.dimastr.com/ outspy/home.htm)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sicos1977/MsgKit/issues/15#issuecomment-332586367, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUpzUAPADal-QXPA0hYMI0Ds7mdtudGks5smn3tgaJpZM4PeSm- .
A few years ago I wrote a library to read MSG files (https://github.com/Sicos1977/MSGReader) that uses the IStorage interface to read the E-mails. I was curious if I could write a library that could produce MSG files without using that interface... so I wrote the MSGKit library. One of my goals was to merge the MSGReader library into it and get rid of the IStorage interface so that it also can be used from .NET CORE.
Oh ok so you basically want to do the reverse of MSGkit now and use it to read emails (without IStorage).
Hmm, probably do able (reverse the operations, plus I think you already read some in MsgKit).
I don't see why not. Almost like building outlook from scratch basically. Is there a purpose for that though?
I think MsgKit is going to need a nuget package coming up quick here ;)
There is already a NuGet package, I have to do a little bit of code cleanup and then I will release a new version. I think it will be tomorrow or otherwise this weekend.
Excellent, in the mean time.. I'm working on figuring out how include groups into the Recipients.
What I always do if I want to figure something like this out. I make a group in Outlook, add that to an E-mail and look inside the E-mail with OpenMCDF or Outlook Spy.
I'll give it a go in a bit, I'm just trying to figure out how to Compress the RTF Body first.
This is how you decompress it... so compressing is just the other way around :-) --> https://github.com/Sicos1977/MSGReader/blob/master/MsgReader/Outlook/RtfDecompressor.cs
But you also can store the RTF message uncompressed in the message file. There is a boolean inside an msg file that just says if the RTF is compressed or not.
This is probably the compressing method that is used inside an msg file --> https://msdn.microsoft.com/en-us/library/cc463890(v=exchg.80).aspx
Oh man, didn't think you could get away with storing it uncompressed.. I tried loading the BODY with RTF and no compression flag.. didn't seem to have much luck
I've been looking at this https://github.com/delimitry/compressed_rtf - it implements [MS-OXRTFCP]
mostly have it converted to C# code, just need a little more time
On Sat, Sep 30, 2017 at 6:53 AM, Kees notifications@github.com wrote:
This is probably the compressing method that is used inside an msg file --> https://msdn.microsoft.com/en-us/library/cc463890(v=exchg.80).aspx
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sicos1977/MsgKit/issues/15#issuecomment-333310035, or mute the thread https://github.com/notifications/unsubscribe-auth/ADUpzQ09CBGcjPSah0cj2FpWqOqR0Jmwks5snkfkgaJpZM4PeSm- .
I just released a new NuGet package
Install-Package MsgKit -Version 1.1.5
Lookin good. I have this compression code complete (maybe a little refactoring to do). Have to try it out with MsgKit now.
I reused a bit of your CRC32 code.
Not sure if you'd be interested in adding it to MsgKit or rather just keep it as a seperate library.
Just send me a pull request and I will merge it with MsgKit.
I have closed this issue, since thanks to you it isn't an issue anymore... please feel free to add comments to this thread to chat :-)
Sounds good. I have the distributed list contacts working now. Plus a bug fix for RTFCompressor.
Haven't tried sending the email though, going to get my hands on a real distributed list and try sending the generated email before I create a pull request.
No way to create appointments, I can see how to create an email. But I don't think appointments is implemented yet.