Outlook should support treating Emails as Tasks

We believe that email is at it’s most effective when you’re using your inbox as a task list. If you need to ask someone a question it’s usually a better option to use the phone. If you are asking someone to do something however, email works really well, because you then have a record of the task – with the date and time as well. Outlook should encourage you using your email as a task tracking system, and provide a way you can see the status of emails.

When you send an email there should be a field ‘Action’ with these choices:

  • Task – Action Required (default)
  • FYI – email is for information purposes only, no action required

Please add a status combo field to emails (should appear by default in sent items):

  1. N/A was a FYI
  2. N/A by Adam on 21/9/2005
  3. Replied Not Resolved
  4. Not Replied in \\Tim\inbox
  5. Not Replied deleted from \\Tim\inbox

Corrupt .PST and .OST Files

We need something better than a .pst file. I would prefer a SQL/MSDE database file that has less chance of going corrupt. I have seen this message box too many times and the tools scanpst.exe and scanost.exe do not fix it.

Figure: There should be something better that .PST files

Figure: There should be something better that .PST files

Bad Outlook Programming Model: Cached Exchange Mode Limitations

Cached Items in Outlook

When “Cached Exchange Mode” is enabled, items which have been cached locally will have some unexpected behaviour. This feature allows one to work with your personal folders, as well as selected public folder contents even when they’re disconnected from the Exchange Server.

However, once that feature is enabled, if you attempt to access the Parent.FolderPath property, you will be returned an inaccurate folder path. To see this bug in action, select an item in a subfolder of the folder which you have added to Favorites. Now press Alt+F11 to bring up the Visual Basic editor, followed by Ctrl+G to bring up the Immediate window.

Application.ActiveExplorer.Selection(1).Parent.FolderPath

This will return

'\\Public Folders\Favorites\ImmediateParentFolder'

One would assume it would return

'\\Public Folders\Favorites\ParentFolder\ImmediateParentFolder'

but that’s not the case. If you disable “Download Public Folder Favorites”, then the above code would return the correct canonical path of the folder.

'\\Public Folders\All Public Folders\ParentFolder\ImmediateParentFolder'

In our product SSW eXtremeEmails!, it prevents the Incident screen from obtaining a valid URL for the email item.

Figure: CDO object model failed to retrieve Outlook Web Access URL

Figure: CDO object model failed to retrieve Outlook Web Access URL

As a work around, the “Download Public Folder Favorites” settings should be disabled. If you wish to see correct URLs in your personal folders, “Cached Exchanged Mode” must be disabled all together.

 Figure: Disabling Cached Exchange Mode as a work around to invalid item properties


Figure: Disabling Cached Exchange Mode as a work around to invalid item properties

I hope this would be fixed in the next version of Outlook. Items in folders added to Favorites should provide the canonical path to aid Outlook ‘smart client’ plug-ins with Offline functionality, even when “Download Public Folder Favorites” is enabled.

Bad Outlook Programming Model: No Outlook.Item exposed!

Item Enumeration

Outlook (probably for backward compatibility reasons) doesn’t have a default Outlook.Item object as the parent of the various Outlook.Items (Outlook.MailItem, PostItem, AppointmentItem). This means code like this wouldn’t work:

dim oItem as Outlook.MailItem
for each oItem in Outlook.ActiveExplorer.Selection
' you get errors for any items (like PostItem), that isn't an 
MailItem in your inbox
MsgBox oItem.Subject
next

Figure: Example of incorrect code

So you have to write something like this:

dim oItem as Object
for each oItem in Outlook.ActiveExplorer.Selection
' this will work, because every type of Outlook Item has the subject property... 
' but we're relying on reflection (late binding) here and 
' intellisense doesn't help us when we write code,
' compiler doesn't tell us if we made a typo,
' late binding is slower...
MsgBox oItem.Subject
next

Figure: Example of correct code