C# 如何在outlook 2010的外接程序C中获取收到的邮件(或任何其他项目)

C# 如何在outlook 2010的外接程序C中获取收到的邮件(或任何其他项目),c#,email,outlook,C#,Email,Outlook,我尝试以下代码: Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); mapiNameSpace.Logon(null, null, false, false);

我尝试以下代码:

Microsoft.Office.Interop.Outlook.Application myApp = new   Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");

mapiNameSpace.Logon(null, null, false, false);
mapiNameSpace.Logon("MyEmailID", "PasswordOfMyEmail", Missing.Value, true);

Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
MessageBox.Show(myInbox.Items.Count + "");
但是MessageBox会显示我0 myInbox.Items.Count

所以我可能无法访问我的outlook帐户

我使用VisualStudio2010


有人能帮我吗?

首先,如果您在外接程序中,您永远不应该创建Outlook.Application对象的新实例-您已经通过全局公开了它

其次,不要呼叫登录-Outlook将为您执行此操作。该方法实际上适用于外部应用程序,而不是加载项

第三,调用Logon一次,配置文件名为null。如果不想传递可选参数,请传递Missing.Value,而不是null。第二个登录调用为什么需要它?什么也做不了。无论如何,传递任何电子邮件都不起作用-参数必须是控制面板| Mail | Show Profiles中显示的配置文件名称

最重要的是,你什么时候打电话?你的收件箱里真的有邮件吗?或者是全新的配置文件,Outlook还没有机会从邮箱下载邮件?

因此您可以使用:

Explorer currentExplorer = Globals.ThisAddIn.Application.ActiveExplorer();
MAPIFolder myInbox = Globals.ThisAddIn.Application.ActiveExplorer().CurrentFolder;

try 
{
    if ( (currentExplorer != null) && (currentExplorer.Selection != null) && (currentExplorer.Selection.Count > 0) )
    {
        object item = currentExplorer.Selection[1];
        if (item is MailItem) 
        {
            MailItem mailItem = item as MailItem;
            MessageBox.Show(myInbox.Items.Count + "");
        }
    }
}

对不起,可能是重复的,但它没有重复,我仍然在我的加载项中,我想从Outlook 2010接收邮件或任何其他项目。加载项是什么意思?看起来您正在连接到一个无关的Outlook实例,并试图将电子邮件发送出去。您的代码似乎没有任何附加模块。如果你只是关心你有多少电子邮件,请看看EWS。否则,请说明您的程序是如何作为外接程序的。我指的是为Outlook添加的插件C是VSTO吗?COM互操作?什么技术?你为什么会拒绝使用EWS?你是对的,然后我采取了另一种方法Explorer currExplorer=Globals.ThisAddIn.Application.ActiveExplorer;MAPIFolder myInbox=Globals.ThisAddIn.Application.ActiveExplorer.CurrentFolder;对象项=currenexplorer.Selection[1];如果项目为MailItem{…},感谢您的解释: