相关疑难解决方法(0)

无法转换COM对象 - Microsoft Outlook和C#

我已编写此代码以查看Outlook邮箱中的未读项目,以下是代码:

 Microsoft.Office.Interop.Outlook.Application app;
 Microsoft.Office.Interop.Outlook.Items items; 
 Microsoft.Office.Interop.Outlook.NameSpace ns; 
 Microsoft.Office.Interop.Outlook.MAPIFolder inbox;

 Microsoft.Office.Interop.Outlook.Application application = new Microsoft.Office.Interop.Outlook.Application();
        app = application;
        ns =  application.Session;
        inbox = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
        items = inbox.Items;
        foreach (Microsoft.Office.Interop.Outlook.MailItem mail in items)
        {
            if (mail.UnRead == true)
            {
                MessageBox.Show(mail.Subject.ToString());
            }
        }
Run Code Online (Sandbox Code Playgroud)

但在foreach循环中我收到此错误:

"无法将类型为'System .__ ComObject'的COM对象转换为接口类型'Microsoft.Office.Interop.Outlook.MailItem'.此操作失败,因为QueryInterface调用COM组件上的接口与IID'{00063034-0000- 0000-C000-000000000046}由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)).

你能帮我解决一下这个错误吗?

c# outlook office-interop outlook-2003 c#-2.0

16
推荐指数
3
解决办法
3万
查看次数

阅读没有打开Outlook应用程序的电子邮件

多数民众赞成我使用C#阅读电子邮件:

outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx);
            Outlook.NameSpace olNameSpace = outLookApp.GetNamespace("mapi");

olNameSpace.Logon("xxxx", "xxxxx", false, true);
Outlook.MAPIFolder oInbox  = olNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items oItems  = oInbox.Items;
MessageBox.Show("Total : " + oItems.Count); //Total Itemin inbox
 oItems = oItems.Restrict("[Unread] = true");
 MessageBox.Show("Total Unread : " + oItems.Count); //Unread Items
 Outlook.MailItem oMsg;


 Outlook.Attachment mailAttachement;
 for (int i = 0; i < oItems.Count; i++)
 {
     oMsg = (Outlook.MailItem)oItems.GetFirst();

     MessageBox.Show(i.ToString());

    MessageBox.Show(oMsg.SenderName);
    MessageBox.Show(oMsg.Subject);
    MessageBox.Show(oMsg.ReceivedTime.ToString());
    MessageBox.Show(oMsg.Body);
Run Code Online (Sandbox Code Playgroud)

我面临的问题是此应用程序仅在Outlook在计算机上打开时才有效.如果Outlook已关闭,则会抛出异常:

服务器不可用.如果此情况仍然存在,请与管理员联系.

无论如何我可以阅读Outlook打开的电子邮件吗?

c# email outlook

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

outlook ×2

c#-2.0 ×1

email ×1

office-interop ×1

outlook-2003 ×1