Adding Outlook Inbox Posts back to OWA


17 September 2011, by

I’m a big fan of Outlook’s post-type messages for leaving myself notes in my inbox.

  • They’re quick and simple to write: the keyboard shortcut is Ctrl-Shift-S; if you write your memo in the title then it’s visible from your inbox view without opening the message and there’s no requirement to write a message body.
  • You can include as much or as little as you like: you can paste formatted text into the message body if you need more information, or you can attach files to the post.
  • You can use follow-up flags to schedule them as tasks.
  • They become a searchable part of your inbox, and remain searchable if filed away to other folders.
  • They get synchronised to my phone so I can read them later, even if the device doesn’t support Exchange tasks, and I’ll see them whenever I check my email remotely.
  • With the post icon they’re visually distinct from emails – an advantage over just sending yourself an email instead – and you can even search by post-type to show only your own reminders.

Now using your inbox is not a reliable way to manage your personal action list:  you need to understand when these are appropriate. For example I use posts for short-term reminders with no fixed deadline, or when I need to file away a quick note for later. Nevertheless I find this a very useful feature and am happy to use it carefully.

I’m currently working out of the office and most of the day read my email through Exchange’s Outlook Web Application (OWA). OWA used to have the option to create inbox posts but unfortunately in the latest version they removed the ‘new post’ option for mail folders:

However it is still there for public folders:

and posts created by Outlook are still shown correctly:

So there is still the framework here to support them! I set about digging into OWA to see if I could get them back.

Clicking ‘New Mail’ in my Inbox pops up a window with an URL in the form:

https://Softwire’s-Exchange-Server/OWA/?ae=Item
&a=New
&t=IPM.Note
&cc=MTQuMxxxxxxxxxxxxxxxxxxxxxx
&pspid=_1299000000000_119246497

and ‘New Post’ in a public folder pops up with URL:

https://Softwire’s-Exchange-Server/OWA/?ae=Item
&a=New
&t=IPM.Post
&fId=PSF.LgAAAAAaaaaaaaThePublicFolder
&pspid=_1299000000000_119246966

(edited; the real identifiers are much longer)

So the challenge then becomes to understand these parameters and figure out if I can modify the second URL to post to my inbox. If you open a message from your inbox and ‘View Source’ you’ll see a block of script called createGlobalVariables which includes lines:

oPage.declareSubPageVariable("a_sFId",
                             "LgAAAAAaaaaaaaMyInbox",
                             VARIABLE_SCOPE_SUBPAGE);
oPage.declareSubPageVariable("a_sInbxId",
                             "LgAAAAAaaaaaaaMyInbox",
                             VARIABLE_SCOPE_GLOBAL);

and the same block from viewing a public folder post

oPage.declareSubPageVariable("a_sFId",
                             "PSF.LgAAAAAaaaaaaaThePublicFolder",
                             VARIABLE_SCOPE_SUBPAGE);
oPage.declareSubPageVariable("a_sInbxId",
                             "LgAAAAAaaaaaaaMyInbox",
                             VARIABLE_SCOPE_GLOBAL);

Here a_sFId matches the fId parameter in the ‘new post’ URL for the same public folder. It also seems likely that a ‘PSF.’ prefix on a fId means ‘Public Folder’ (or ‘Public Store Folder’). So, for a first experiment I tried:

https://Softwire’s-Exchange-Server/OWA/?ae=Item
&a=New
&t=IPM.Post
&fId=LgAAAAAaaaaaaaMyInbox

using the fId value for my inbox and dropping the pspid because I wasn’t sure what it was. And success – almost:


I now have an URL that successfully generates a new post in my inbox! Since I know that the MAPI folder ID for my inbox will be fixed (and suspecting that here fId is actually a base64-encoded MAPI folder ID) I bookmarked this URL and have been successfully using it to post to my inbox since.

There are two remaining issues here, though.

  1. When the post is complete, the window attempts to close itself. Browsers only allow this for windows created by other pages and not for user-created windows (e.g. opened from a bookmark). In IE this pops up a confirmation ‘The webpage you are viewing is trying to close the window’ and will close; in Firefox, however, it silently fails to close (there’s a message in the error log window but it’s not shown by default). To fix this I would need to get OWA to open the window itself, i.e. I would need to add the ‘New Post’ button back into OWA menu. Digging around, I found that this would require a .NET code change in the general case and this isn’t easy or something I’d be allowed to do to our live Exchange server! Instead it could be done by writing a Firefox or Chrome script to modify the page in my browser as I load it – which I might tackle in the future.
  2. It seems to work with the pspid parameter but I’m not sure what the consequences of leaving it off are. Digging through the OWA JavaScript code I found that this is ‘parent sub-page ID’ and is not used by the new post form. It might be used by the session keep-alive ping-back code but as long as other OWA windows are open this won’t be a problem.

In summary, to add inbox posts to your OWA the simple way:

  1. Open a new message pop-up window in your OWA and copy the URL into a text editor. Change ‘IPM.Note’ to ‘IPM.Post’, and ‘cc=’ into ‘fId=’. Remove the rest of the line.
  2. In the main OWA window, View Source; copy the a_sInbx value from approximately line 29, including the quotes for now.
  3. You now need to take this string which is escaped for JavaScript and convert it into an URI-encoded string to append to your URL. The easiest way to do this is to use the JavaScript in your browser. Enter the following URL into a new tab in your browser:
    javascript:document.write(encodeURIComponent("LgAAAAAaaaaaaaMyInbox"));
    

    using the a_sInbx value you took from the last step in place of the quoted string. You should see a single string appear in the browser tab; take this and append it to your URL so far after the ‘fId=’.
    (Note that recent versions of IE will strip off the ‘javascript:’ URL scheme if your copy & paste it in; you may have to type that part manually.)

  4. You should now have something like
    https://your-exchange-server/OWA/?ae=Item&a=New&t=IPM.Post&fId=<inbox ID>
    Visit this URL and bookmark it.
  5. Enter a subject for the post and click ‘Post’.
  6. After the ‘Saving’ spinner has appeared, wait 1-2 seconds and manually close the window.

I hope you find this as useful as I do!

Tags: ,

Categories: Technical

«
»

Leave a Reply

* Mandatory fields


3 × two =

Submit Comment