2012-06-20 70 views
1

我正在嘗試編寫一個應用程序,向用戶顯示來自共享IMAP文件夾樹中選定文件夾的郵件標題列表。該應用程序的用戶使用Outlook 2007或2010,並將共享的IMAP文件夾樹映射到其帳戶。同步單個IMAP文件夾

我能夠訪問文件夾和迭代使用Outlook互操作的郵件是這樣的:

Outlook.Application outlook = new Outlook.Application(); 
Outlook._NameSpace ns = outlook.GetNamespace("MAPI"); 
Outlook.Folder folder = MyFolderFinder(...); 

foreach (var item in folder.Items) 
{ 
    if (item is Outlook.MailItem) 
    { 
     Outlook.MailItem mailItem = item as Outlook.MailItem; 
     // do something with mailItem 
    } 

} 

不幸的是這種方法不會出現那麼除非用戶執行手動文件夾同步,使用Outlook的「更新文件夾」,他們可能會看到一個陳舊的列表。

有沒有使用Outlook Interop以編程方式同步單個IMAP文件夾的方法?

+0

我不是互操作的專家,但這種行爲聽起來很正確:你問的前景給你郵寄的物品,讓您得到項目前景知道不是新他還沒有得到的那些。如果該文件夾位於Exchange 2007+服務器上,則可以利用EWS(交換Web服務)直接訪問服務器本身(前幾天我爲自我培訓目的編寫了一個小型郵件閱讀器,但文檔記錄不完整,但非常直接結束)。 – Alex

回答

0

使用新的郵件接收事件,我認爲你可以做到這一點。

private void ThisApplication_Startup(object sender, System.EventArgs e) 
{ 
    this.NewMail += new Microsoft.Office.Interop. 
     Outlook.ApplicationEvents_11_NewMailEventHandler(
     ThisApplication_NewMail); 
} 

void ThisApplication_NewMail() 
{ 
} 

參考:http://msdn.microsoft.com/en-us/library/ms268998(v=vs.80).aspx