私たちは、asp.net Webアプリケーションを使用して異なるアカウントのExchangeサーバーから電子メールを取得するための新しいタスクを開始しました。過去にこのような経験はありませんでしたが、オンラインで検索したところ、Outlookと通信してそこから電子メールを取得できるコードスニペットが見つかりました。ASP.NET WebページがOutlookの問題から電子メールを受け取る
"Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Outlook.PostItem'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063024-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from 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;
}
あなたが相互運用機能を使用する必要がありますか、またはあなたが代わりにメールサーバーからメッセージを取得するためにPOPを使用するほとんどのアプリケーションのようにそれを行うことができますか? – Earlz
あなたは読んでいる - http://stackoverflow.com/questions/652549/read-ms-exchange-email-in-c? –
@エリズ、それはする必要はありませんが、私は交換サーバーからメールを取得する方法が必要です。 –