我希望有人能幫助我。讓我先說我是一個非常業餘的程序員。C#SyncObject與Outlook Interop
我在Outlook中有一個IMAP電子郵件帳戶。我希望在該帳戶中使用一個電子郵件文件夾,並確保Outlook中該文件夾中的所有郵件都與編程的IMAP電子郵件服務器上的郵件同步。我創建了下面的代碼,但我有以下問題/問題:
- SyncObject是我應該用來同步此outlook文件夾與imap服務器的正確機制?
如果我運行它10次,它將運行沒有錯誤2或3次,但然後它會在此行錯誤:
sync = app.Session.SyncObjects [folder];
,出現以下錯誤:"System.Runtime.InteropServices.COMException (0x80020005): Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))\r\n at Microsoft.Office.Interop.Outlook.SyncObjects.get_Item(Object Index)\r\n at WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e) in C:\Users\DKS\documents\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs:line 38"
關於此錯誤的任何想法?
當我運行它時,無論它是否成功運行,它都會讓outlook.exe進程在我的機器上運行。如何正確關閉interop?
private void button1_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Outlook.Application app = null; Microsoft.Office.Interop.Outlook._NameSpace ns = null; Microsoft.Office.Interop.Outlook.MAPIFolder folder = null; Microsoft.Office.Interop.Outlook.SyncObject sync = null; try { app = new Microsoft.Office.Interop.Outlook.Application(); ns = app.GetNamespace("MAPI"); folder = ns.Folders["yahoo_imap_mail"].Folders["Trash"]; sync = app.Session.SyncObjects[folder]; sync.Start(); } catch (System.Runtime.InteropServices.COMException ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(ex.ToString()); } finally { ns = null; app = null; folder = null; sync = null; } MessageBox.Show("Complete"); }
我看到_syncObj.Start()將同步到文件夾,但有沒有辦法確定同步作業是否完成? – ajivani 2016-02-29 22:20:00
是的,你看到在同步代碼分配..該函數運行完成 – BugFinder 2016-02-29 22:21:03