![](/img/trans.png)
[英]unable to cast COM object of type 'System._ComObject' to 'microsoft.Office.Interop.Excel.Application'"
[英]C# outlook : Unable to cast COM object of type 'System._ComObject' to Interface type 'Microsoft.Office.Interop.Outlook.MailItem.'
我是 c# 的新手。
自 1 周以来,我一直在尝试自己解决此问题,直到我别无选择,只能在这里寻求帮助。
我的目标是创建一个控制台应用程序,它将在辅助邮箱 [mailboxB@gmail.com]/second outlook 帐户上查找未读邮件并根据主题回复这些邮件。
该代码在我的 Machine 上运行良好。
不幸的是,当在其他机器上部署相同的 exe 时,会生成以下错误:
unable to cast com object of type 'microsoft.office.interop.outlook.mailitem'.This operation failed because the QueryInterface call on the COM component for the interface with IID'{00063034-0000-0000-C000-000000000046}' failed due出现以下错误:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE))
请注意,我已尝试以下方法来解决问题,但问题仍然存在:
以管理员身份重新启动 Outlook。
在属性->兼容性下更改应用程序的兼容性以管理员身份运行
检查了 outlook 版本,它是 16.0,并且在代码中使用了相同的 ref。
请在下面找到我的代码:
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = (Outlook.NameSpace)oApp.GetNamespace("MAPI");
MAPIFolder theInbox = oNS.Folders["mailboxB@gmail.com"].Folders["Inbox"];
Outlook.Items unreadItems = theInbox.Items.Restrict("[Unread]=true");
string t = "Test Mail";
try
{
foreach (Outlook.MailItem it in unreadItems)
{
if (it.Subject == t)
{
Outlook.MailItem replyMail = it.Reply();
it.HTMLBody = DateTime.Now.ToString("HH:mm:ss");
replyMail.Send();
it.Unread=false;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
任何形式的帮助将不胜感激。
您的收件箱文件夹中可以包含MailItem
以外的项目,例如ReportItem
或MeetingItem
。
将您的代码更改为
foreach (object obj in unreadItems)
{
if (obj is Outlook.MailItem it)
{
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.