我正在尝试访问Outlook中其他帐户上的垃圾邮件文件夹。 在我的Outlook帐户中,我设置了3个电子邮件帐户,其中2个与工作有关,1个与个人有关。
我使用以下代码设法对主帐户中的电子邮件进行了访问:
ns = Application.GetNamespace("MAPI");
inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
items = inbox.Items;
这很好用。
但是,当我尝试访问其他帐户时,出现以下错误:
System.Runtime.InteropServices.COMException:'由于注册表或安装问题,操作失败。重新启动Outlook,然后重试。如果问题仍然存在,请重新安装。'
Microsoft.Office.Interop.Outlook.NameSpaceClass.GetSharedDefaultFolder(收件人,OlDefaultFolders FolderType)中的
在DemoAntiSpam2.ThisAddIn.ThisAddIn_Startup(对象发送方,EventArgs e)中,位于C:\ Projects \ T \ DemoAntiSpam2 \ DemoAntiSpam2 \ ThisAddIn.cs:第29行
在Microsoft.Office.Tools.AddInImpl.OnStartup()
在DemoAntiSpam2.ThisAddIn.FinishInitialization()中的C:\ Projects \ T \ DemoAntiSpam2 \ DemoAntiSpam2 \ ThisAddIn.Designer.cs:第57行
在Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases执行阶段) 在Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints()
Outlook.NameSpace ns;
Outlook.MAPIFolder inbox;
Outlook.Items items;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
ns = Application.GetNamespace("MAPI");
var recipient = ns.CreateRecipient(recipientAddress);
recipient.Resolve();
if (recipient.Resolved)
{
// Code breaks here.
inbox = ns.GetSharedDefaultFolder(recipient, Outlook.OlDefaultFolders.olFolderInbox);
items = inbox.Items;
items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
}
}
答案 0 :(得分:0)
我已经设法通过以下方法解决了这个问题:
我没有使用GetSharedDefaultFolder()
访问文件夹,而是查找了命名空间文件夹的索引:
Outlook.NameSpace ns = Application.GetNamespace("Mapi");
Outlook.MAPIFolder folder = ns.Folders[recipient].Folders["Ongewenste e-mail"];
文件夹名称是您在Outlook中使用的直接名称。您还可以使用EntryId
,它是对象的唯一ID。