January 2011 Release of MFCMAPI and MrMAPI

The January 2011 Release (build is live: http://mfcmapi.codeplex.com.

This round of work had two foci: Speed startup time of MFCMAPI and MrMAPI, and add features to MrMAPI.

I have been ignoring startup time of MFCMAPI for a while now, since it started up “fast enough”. But MrMAPI was designed to be run in batch scripts, and a slow startup time really adds up over multiple runs. They share the same code, so any work improving one improves the other. I found a number of opportunities to squeeze cycles out by sorting some arrays in the source and by improving the algorithms I use to shuffle them around when we’re starting. But the biggest improvement will happen if you happen to run MFCMAPI or MrMAPI from a directory with a lot of other files in it, such as a tools directory. We get a great speedup by remembering which files are and are not add-ins to MFCMAPI, so we don’t keep retrying them.

Other than the speed-up work, MrMAPI got most of the love. I added a host of new features: Error lookup, guid lookup, ACL and Rule table exports, and nickname cache parsing are the big ones. I’ve also uploaded a 64 bit version of MrMAPI since some of the features actually log in to a profile, and we need to support 64 bit Outlook.

When you download the new version of MFCMAPI, make sure to download MrMAPI for all of your property tag needs.

Here’s a change list – see the Issue Tracker on Codeplex for more details, or look at the code:

  • SmartView: Parse nickname cache.
  • MrMAPI: Error lookup – mostly MAPI errors
  • MrMAPI: GUID lookup – every GUID MFCMAPI knows can be searched
  • MrMAPI: Smartview can now accept either hex or binary files with the –b switch
  • MrMAPI: Help banner: tells what MrMAPI can do.
  • Startup optimization
  • Smartview: Parse PR_FORM_HOST_MAP


Comments (4)

  1. Warren Brown says:

    Many thanks again for all the goodies.

    MrMapi -? has minor typo for -E options referring to -s and -n rather than -S and -N

    Of more substantial interest, a partial value for the -E option does not seem to behave as I would expect.  eg, mrmapi -E 0x8004

    does not return  all 0x8004* values, but instead returns 0x00008004

  2. Stephen Griffin says:

    -s and -n are acceptable alternatives for -S and -N, but I'll fix that for consistancy.

    For your lookup, try this:

    mrmapi -e |findstr /i 8004

  3. MS says:

    I was using the MFCMAPI command "Convert EML to MSG" under the session menu and noticed that attachments without file extensions are given either a .dat or .txt extension, depening on the MIME of the EML file.  (Specifically, those without Content-Type: application/octet-stream get .txt)

    I looked into this further, and I think it is in the MIMEtoMAPI call that does this.  Is there something done in MIMEtoMAPI that might do this?

  4. Stephen Griffin says:

    It definitely sounds like something in MIMEToMAPI is doing that, and it does make sense that it would. MFCMAPI definitely isn't touching the attachments.