3 01 2015
Moving IMAP email to Exchange
While moving email from Open Source version of Zimbra (Which only supports IMAP in Outlook, as it has its own Zimbra Client) to a Microsoft Exchange based system I ran into a strange problem. In Outlook E-Mails in folders would not show, yet they would on the OWA (Webmail) interface.
This is because when the folders got exported they had retained the views associated with the IMAP account. The default IMAP view is to “Hide messages marked for deletion”. Microsoft Exchange doesn’t support marking messages, so the view in Outlook hides all messages in those folders. The folders will also say “Filter Applied”.
This can be fixed by running a Macro which will pass through each folder and sub-folder and change the value from an IMAP type to Note type. The Note type is the default Outlook style folder.
Macro with Thanks to – slipstick.com
Option
Explicit
Dim
SubFolder
As
MAPIFolder
Sub
ChangeFolderClassAllSubFolders()
Dim
i
As
Long
Dim
iNameSpace
As
NameSpace
Dim
myOlApp
As
Outlook.Application
Dim
ChosenFolder
As
Object
Dim
Folders
As
New
Collection
Dim
EntryID
As
New
Collection
Dim
StoreID
As
New
Collection
Set
myOlApp = Outlook.Application
Set
iNameSpace = myOlApp.GetNamespace(
"MAPI"
)
Set
ChosenFolder = iNameSpace.PickFolder
If
ChosenFolder
Is
Nothing
Then
GoTo
ExitSub:
End
If
Call
GetFolder(Folders, EntryID, StoreID, ChosenFolder)
ChangeFolderContainer
For
i = 1
To
Folders.Count
Set
SubFolder = myOlApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
On
Error
Resume
Next
ChangeFolderContainer
On
Error
GoTo
0
Next
i
ExitSub:
End
Sub
Private
Sub
ChangeFolderContainer()
Dim
oFolder
As
Outlook.folder
Dim
oPA
As
Outlook.PropertyAccessor
Dim
PropName, Value, folderType
As
String
PropName =
"http://schemas.microsoft.com/mapi/proptag/0x3613001E"
Value =
"IPF.Note"
On
Error
Resume
Next
Set
oFolder = SubFolder
'Application.ActiveExplorer.CurrentFolder
Set
oPA = oFolder.PropertyAccessor
folderType = oPA.GetProperty(PropName)
Debug.Print SubFolder.Name &
" "
& (folderType)
If
folderType =
"IPF.Imap"
Then
oPA.SetProperty PropName, Value
Debug.Print
" Changed: "
& SubFolder.Name &
" "
& Value
End
If
Set
oFolder =
Nothing
Set
oPA =
Nothing
End
Sub
Sub
GetFolder(Folders
As
Collection, EntryID
As
Collection, StoreID
As
Collection, Fld
As
MAPIFolder)
Dim
SubFolder
As
MAPIFolder
Folders.Add Fld.FolderPath
EntryID.Add Fld.EntryID
StoreID.Add Fld.StoreID
For
Each
SubFolder
In
Fld.Folders
GetFolder Folders, EntryID, StoreID, SubFolder
Next
SubFolder
ExitSub:
Set
SubFolder =
Nothing
End
Sub
The end of the year 2014 Miller & Carter Steakhouse