我希望有人能帮助我。让我先说我是一个非常业余的程序员。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