public static Outlook.MAPIFolder GetOrCreateFolder(this Outlook.Folders folders, string path) { var pathSeparatorIndex = path.IndexOf("\\", StringComparison.Ordinal); var currentFolderName = pathSeparatorIndex < 0 ? path : path.Substring(0, pathSeparatorIndex); var matchingFolder = folders.OfType <Outlook.MAPIFolder>() .FirstOrDefault(f => f.Name == currentFolderName) ?? folders.Add(currentFolderName); return(pathSeparatorIndex < 0 ? matchingFolder : GetOrCreateFolder(matchingFolder.Folders, path.Substring(pathSeparatorIndex + 1))); }