Мы только что запустили новую задачу для получения электронной почты с сервера Exchange для разных учетных записей с помощью веб-приложения asp.net.Я не имел такого опыта в прошлом, но после поиска в Интернете я нашел фрагмент кода, который может общаться с внешним видом и получать электронную почту оттуда.Тем не менее, каждый раз, когда я тестирую код, возникает исключение:
"Невозможно привести объект COM типа 'System .__ ComObject' к типу интерфейса 'Microsoft.Office.Interop.Outlook.PostItem '. Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID' {00063024-0000-0000-C000-000000000046} 'завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)). "
Кто-нибудь знает причину?
Кстати, любое предложение, помогающее при получении писем с сервера обмена напрямую, высоко ценится!
Мой код:
Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.PostItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;
try
{
app = new Microsoft.Office.Interop.Outlook.Application();
ns = app.GetNamespace("MAPI");
ns.Logon("user", "password", false, false);
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Folder Name:{0},EntryId:{1}", inboxFolder.Name, inboxFolder.EntryID);
sb.AppendFormat(" Num Items:{0}", inboxFolder.Items.Count.ToString());
Response.Write(sb);
for (int i = 1; i <= inboxFolder.Items.Count; i++)
{
item = (Microsoft.Office.Interop.Outlook.PostItem)inboxFolder.Items[i];//this is the exception happened line
Console.WriteLine("Item: {0}", i.ToString());
Console.WriteLine("Subject: {0}", item.Subject);
Console.WriteLine("Sent: {0} {1}" item.SentOn.ToLongDateString(), item.SentOn.ToLongTimeString());
Console.WriteLine("Categories: {0}", item.Categories);
Console.WriteLine("Body: {0}", item.Body);
Console.WriteLine("HTMLBody: {0}", item.HTMLBody);
}
}
catch (Exception)
{
throw;
}
finally
{
ns = null;
app = null;
inboxFolder = null;
}