大家好,请教一个问题: C#调用Microsoft.Office.Outlook.MailItem;并且在程序中用MailItem类做了一些操作。编辑的时候,并且在自己的电脑上操作的时候,没有问题,可是一到其他电脑上就报以下错误,程序并且会自动关闭。
System.InvalidCastException:Unable to cast COM object of type 'System._ComObject' to interface type 'Microsoft.Office.Outlook.MailItem'. This operation failed because the QueryInterface call on the COM component for the interface IID '{00063034-0000-0000-C000-000000000046}'failed due to the following error: No such interface supported(Exception from HRESULT:0x60004002(E_NOINTERFACE)).
at JobsDB.EmailAnalyzerSystem.EmailAnalyzer.AnalyzeAll()
at JobsDB.EmailAnalyzerSystem.MailForm.StartAnalyze(Boolean blnUnsubsribe)
请高手们帮帮忙啊,很急的,先谢谢啦!!!
------解决方案--------------------------------------------------------
如果有代码就容易分析了。
不过看错误应该是将其他类型的对象强制转换成MailItem了。因为在outlook中MAPIFromFolder可以放多种类型的Item.
这样当你使用下面代码时就会出错
For Each MItem In MAPIFromFolder.Items
要用类似下面的代码
for(int i = 0 ;i < oItems.Count ; i++)
{
MailItem omsg = oItems.Item(i) as MailItem
if (omsg != null)
{
}
}
以上代码没有经过编译,仅供参考
------解决方案--------------------------------------------------------
类型
foreach ( MailItem oItem in theMailFolder.Items.OfType<MailItem>()) {
}
http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/24942568-6658-47d7-b01b-6b1a89ca6812