I think most of us are victims of email overload on an ongoing basis. In most organizations, the higher up you go in the totem pole, the more emails per day hit your inbox. Communications and correspondence management become extremely important regardless of one becoming a more recognized subject matter expert and/or managing people. Unfortunately the information overload primarily targeted via emails takes up almost 40% of people’s time in most organizations. Add to this the need for keeping updated with various information sources, both internal and external. Tools such as RSS feeds and portals have made this transition easier, however that raises a new challenge of users tinkering with multiple interfaces/systems.
I am not biased to any technology platform, however I must say that Google’s Gmail platform has the right philosophy around several of these issues for the most part. My only challenge, I love the idea of having a desktop application (smart client) to do all of that. Outlook 2007 has capabilities which take us to 60% of the way and there are several cool new features than the predecessor version that make it very viable. Outlook 2010 brings in the social networking collaboration such as in-built integration with Linked-In and advanced conversation threading like Gmail. However for those of us stuck with 2007 until our enterprises upgrade to 2010, here are some tools that bring a little relief:
Taglocity: This neat little tool brings GMAIL type labeling to Outlook. It is free for personal use and if you get your enterprise to buy it then tags/labels can be shared across the enterprise. Couple this with a simple rule to move/archive messages and clean-up of inbox and categorization of communications is done. Set priorities and this learns over a period of time on the type of emails or from whom you prefer to prioritize. An impressive nascent feature.
Xobni: This is a more social networking centric add-in. Some very powerful features. I think, this is closer to what Microsoft has in mind in terms of Office 2010 Social connector add-in.
Now for those of you who are like me and simply wish to have an action item driven inbox, a combination of Microsoft Outlook Rules and a simple Macro that I tweaked from Microsoft’s site (surprisingly difficult to find this one online) should do the trick.
Why bother with this custom solution
Enjoy a clean inbox: Categorizes email and moves them from inbox to a specified folder for multiple email accounts in Outlook 2007. It addresses Exchanges accounts other accounts such as Hotmail which one can get in Outlook 2007 using Microsoft Outlook Connector.
Search emails easily: I will demonstrate how you can setup category search folders that enable you to tag an email with multiple categories just as Gmail labels work. The rules based application of categories saves significant amount of time of manual sorting of emails each time.
It is free!!: A nice little shortcut button allows you execute rules with one click at your own convenience. I recommend that you turn off the check box for all rules so that they don’t run automatically. This way when you execute them using the macro all your mail will get sorted and categorized at once with very little performance hit.
How it works
All credit goes to various MSDN sites and me slapping together some hack lines to make this work for me in less than 20 minutes after spending half a day trying to find an appropriate sample! However, no thanks to any one of those sites of thinking of something this simple and basic to be coupled with category based rules. So, let’s see this is ‘the grunt’ part of the solution.
The Peasants
Open your Visual Basic editor in Outlook 2007
Next copy/paste the code below into the editor and hit the save button.
Sub RunMyRules()
Dim st As Outlook.Store
Dim myRules As Outlook.Rules
Dim rl As Outlook.Rule
Dim count As Integer
Dim ruleList As String
Dim myRulesMsg As String
'On Error Resume Next
' get default store (where rules live)
Set st = Application.Session.DefaultStore
' get rules
Set myRules = st.GetRules
' iterate all the rules
For Each rl In myRules
' Don't execute clear categories rule
If rl.Name = "Clear categories on mail (recommended)" Then
count = count + 1
' determine if it's an Inbox rule
ElseIf rl.RuleType = olRuleReceive Then
' if so, run it
rl.Execute ShowProgress:=False
count = count + 1
ruleList = ruleList & vbCrLf & rl.Name
End If
Next
' tell the user what you did
'ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
'MsgBox ruleList, vbInformation, "Macro: RunMyRules"
Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
Call RunHotmailRules
myRulesMsg = "All rules executed against my Exchange Account successfully" & vbCrLf
'MsgBox myRulesMsg, vbInformation
End Sub
Sub RunHotmailRules()
Dim st As Outlook.Store
Dim myRules As Outlook.Rules
Dim rl As Outlook.Rule
Dim count As Integer
Dim ruleList As String
Dim folder As Outlook.folder
Dim statusMsg As String
Set folder = GetFolder("myaccount@hotmail.com\Inbox")
'If you need to confirm the folder uncomment code line below
'MsgBox folder
' get default store (where rules live)
Set st = Application.Session.DefaultStore
' get rules
Set myRules = st.GetRules
' iterate all the rules
For Each rl In myRules
' Don't execute clear categories rule
If rl.Name = "Clear categories on mail (recommended)" Then
count = count + 1
' determine if it's an Inbox rule
ElseIf rl.RuleType = olRuleReceive Then
' if so, run it
rl.Execute ShowProgress:=False, folder:=folder, includeSubfolders:=True
count = count + 1
ruleList = ruleList & vbCrLf & rl.Name
End If
Next
' tell the user what you did
ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
'MsgBox ruleList, vbInformation, "Macro: RunMyRules"
Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
statusMsg = "All rules executed against myaccount Hotmail Account successfully"
'MsgBox statusMsg, vbInformation
End Sub
Public Function GetFolder(strFolderPath As String) As MAPIFolder
' strFolderPath needs to be something like
' "Public Folders\All Public Folders\Company\Sales" or
' "Personal Folders\Inbox\My Folder"
Dim objApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim colFolders As Outlook.folders
Dim objFolder As Outlook.MAPIFolder
Dim arrFolders() As String
Dim I As Long
On Error Resume Next
strFolderPath = Replace(strFolderPath, "/", "\")
arrFolders() = Split(strFolderPath, "\")
Set objApp = Application
Set objNS = objApp.GetNamespace("MAPI")
Set objFolder = objNS.folders.Item(arrFolders(0))
If Not objFolder Is Nothing Then
For I = 1 To UBound(arrFolders)
Set colFolders = objFolder.folders
Set objFolder = Nothing
Set objFolder = colFolders.Item(arrFolders(I))
If objFolder Is Nothing Then
Exit For
End If
Next
End If
Set GetFolder = objFolder
Set colFolders = Nothing
Set objNS = Nothing
Set objApp = Nothing
End Function
The Vassals
Open Outlook and then browse to the Tools Menu and select Rules and Alerts:
The first rule you need to define is to clear categories on received mail so that other folks’ categorization/labels don’t make their way into your perfect world of searching for things (should be there by default for most folks).
Next, define a categorization Rule. You can define multiple folks to this and once you setup one rule, you can copy and rename them to define more category rules. Adding emails to a category is fairly easy, especially if you are using ‘sender’ as the criterion like i have below. You don’t even need to go through the wizard again to edit that list, just directly click on the link below and select/add the email address that you wish to categorize.
Next, define a move rule. Now this is all dependent on how you like for your physical emails to reside. Remember, if you intend to use category search folders as a means to retrieve archived emails, then you could just setup one folder for archiving everything into and a single archive rule that states, ‘if set to any category, then move to archive folder’. This is the Gmail model. However, if you are like me and have preset physical folders you were already archiving into, then you will need multiple archive rules. An archive rule example corresponding to the categorization rule is shown below:
Once you are done with the rules, you have the brains of this thing defined. Note that you can define these rules for you RSS feeds that you receive within Outlook. Note that rules execute in a chronological order, so make sure the first rule is clear categories, then all your categorization rules and at the very end your archive rules.
The Barons
You are close to solving your pains. Two more simple steps and you are done…
Remember, that Visual Basic Editor business we did and added all that VBA code.. now is the time to create the shortcut button to solve your troubles once and for all.
Use the ‘View’ context menu and browse to ‘Toolbars’ and then ‘customize’.
This opens up the following:
Select ‘Macros’ from the categories list box.
Now select the ‘Project1.RunMyRules’ and drag and drop it on a toolbar in outlook. All it takes to execute your categorization and archival is clicking this button.
The King - You
Start updating the categories as much as you can and spend the extra couple minutes initially to create them every time you get an email. After the first week, most of your mails will be managed through your single click button that we defined.
Hope this helped. I would be happy to help out if anyone runs into any issues with this thing, however the approach seems to work like a charm for me. I have cut down about 3-4 hours a day based on the average of 300+ emails I get on a daily basis.