【发布时间】:2014-06-01 11:49:23
【问题描述】:
在我的收件箱中有一些日历邮件(来自日历的会议请求)。当应用程序从收件箱中获取日历邮件时,它会抛出以下错误:
无法将“System.__ComObject”类型的 COM 对象转换为接口 键入“Microsoft.Office.Interop.Outlook.MailItem”。这个操作 失败,因为对 COM 组件的 QueryInterface 调用 由于 IID 为“{00063034-0000-0000-C000-000000000046}”的接口失败 出现以下错误:不支持此类接口(异常来自 HRESULT: 0x80004002 (E_NOINTERFACE))。
public void GetOutLookEmails()
{
oApp = new Outlook.Application();
oNS = oApp.GetNamespace("MAPI");
foreach (Outlook.MAPIFolder folder in oNS.Folders)
{
GetFolders(folder);
}
}
public void GetFolders(Outlook.MAPIFolder folder)
{
if (folder.Folders.Count == 0)
{
try
{
if (folder.DefaultItemType == Outlook.OlItemType.olMailItem)
{
if (folder.Name == "Inbox")
{
oEmailsFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items Inboxitems = oEmailsFolder.Items;
if (Inboxitems.Count > 0)
{
foreach (Outlook.MailItem mail in Inboxitems)///when compiler comes here it does not create mail object and throws error...because email contains calendar reminder so I guess I need to check if it is olCalendar event or something else that resolves error
{
if (mail != null)
{
//here I am retrieving concerning data from emails///no issue here
}
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
else
{
foreach (Outlook.MAPIFolder subFolder in folder.Folders)
{
GetFolders(subFolder);
}
}
}
【问题讨论】:
-
如果您可以发布一些代码会有所帮助:)。
-
您在使用 Exchange 网络服务吗?
-
您使用的 COM 引用似乎未在该计算机上注册。
-
没有,实际上我正在基于 C# 将 Outlook 电子邮件导入我的项目,如果没有与任何日历提醒对应的电子邮件,通常电子邮件将被成功导入...但是当属于任何日历提醒的电子邮件时(收件箱中的 Outlook.MailItem 邮件)给出错误..
-
好的 Ahmed ilyas 请指导我如何注册 COM 参考...
标签: c#