刷新收件箱microsoft interop outlook



我有以下代码登录到outlook收件箱以检索电子邮件。如果找不到要查找的某封电子邮件,我想刷新收件箱文件夹,然后重试。它和再次运行这个函数一样简单吗?

我想要相当于点击";发送/接收";outlook中的按钮以获取任何新电子邮件。

private Microsoft.Office.Interop.Outlook.Items loginEmail()
{
//TODO.............................................
//RDOSession session = new RDOSession();
//session.Logon();
//Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder myContacts = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts);
//login
mapiNameSpace.Logon(null, null, false, false);
mapiNameSpace.Logon("login@mywebsite.com", "pass", false, true);

//Microsoft.Office.Interop.Outlook.Items myItems = myContacts.Items;
// Console.WriteLine("Total : ", myItems.Count);
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
//  Console.Write(myInbox.Name);
Microsoft.Office.Interop.Outlook.Items inboxItems = myInbox.Items;
// Console.WriteLine("Total : ", inboxItems.Count);
//Microsoft.Office.Interop.Outlook.Explorer myexp = myInbox.GetExplorer(false);
//mapiNameSpace.Logon("Profile", Missing.Value, false, true);
return inboxItems;
}

调用此函数获取新邮件

mapiNameSpace.SendAndReceive(false);

NameSpace.SendAndReceive方法启动立即传递当前会话中提交的所有未送达邮件,并立即接收当前配置文件中所有帐户的邮件。

SendAndReceive提供了相当于Send/Receive All命令的程序,当您单击"工具"然后单击"发送/接收"时,该命令可用。

如果不需要同步所有对象,可以使用SyncObjects集合对象来选择特定对象。有关详细信息,请参阅NameSpace.SyncObjects.

private void DirectSendAndReceiveCall(object sender, IRibbonControl control, bool pressed)
{
Outlook.NameSpace ns = OutlookApp.GetNamespace("MAPI");
ns.SendAndReceive(false);
if (ns != null) Marshal.ReleaseComObject(ns);
}

有关详细信息,请参阅如何在Outlook中以编程方式执行发送/接收。

最新更新