Outlook for Mac Raw Query based Smart Folder

August 3, 2019

My recommendation for Mac power-user email client is MailMate. No question. No contest.

However sometimes work security policies force you into Microsoft-Exchange-land and your only choice is to use Outlook for Mac

You won't ever be able to make Outlook work as well as MailMate, but you can do a few things to help you get closer. MailMate Smart Mailboxes can be somewhat mimicked using Outlook Smart Folder feature along with the Raw Query option.

Outlook mail search is based on the Mac Spotlight search and index system. So make sure you have Spotlight enabled for mail in System Preferences → Spotlight → Mail & Messages:

Then ⌘⌥F to enter Advanced Search mode, then click the Item Contains drop-down and select Raw Query

Now you can enter your raw query in the text box. The raw query is Spotlight query syntax and fields.

To find out what fields Spotlight makes available, run mdls on an Outlook mail message file. In my case Outlook stores mail messages under ~/Library/Group Containers/UBF8T346G9.Office/Outlook/Outlook 15 Profiles/Main Profile/Data/Messages/*/*

$ mdls 8459FCED-2F8B-6A2E-B12E-1BC7C3DFFE33.olk15Message
com_microsoft_outlook_accountID                = 3
com_microsoft_outlook_completed                = 0
com_microsoft_outlook_flagged                  = 0
com_microsoft_outlook_folderID                 = 166
com_microsoft_outlook_forwarded                = 0
com_microsoft_outlook_has_attachments          = 0
com_microsoft_outlook_has_mentioned_me         = 0
com_microsoft_outlook_has_reminder             = 0
com_microsoft_outlook_has_text_content         = 1
com_microsoft_outlook_hasDueDate               = 0
com_microsoft_outlook_hasStartDate             = 0
com_microsoft_outlook_junkLikelihood           = -100
com_microsoft_outlook_messageReceived          = 2019-08-04 19:18:22 +0000
com_microsoft_outlook_messageSent              = 2019-08-04 19:18:19 +0000
com_microsoft_outlook_primaryCategory          = 0
com_microsoft_outlook_priority                 = 0
kMDItemDisplayName                             = "AWS CodeBuild www-site Complete"
...

Use those fields to form your raw query. For example I have a Smart Folder named Todo where I want to include anything in the Later folder folder or that is flagged and that isn't completed yet and isn't in the Spam or Trash folder:

  (com_microsoft_outlook_folderID == 123
|| com_microsoft_outlook_folderID == 154
|| com_microsoft_outlook_flagged == 1)
&& com_microsoft_outlook_completed == 0
&& com_microsoft_outlook_folderID != 166
&& com_microsoft_outlook_folderID != 162

You may also find the below Apple Script helpful. Select a folder in the Outlook UI and run the script using Script Editor, it will log the folder id of the currently selected folder.

tell application "Microsoft Outlook"
	get selected folder
end tell