获取 Outlook 日历邮件

Posted

技术标签:

【中文标题】获取 Outlook 日历邮件【英文标题】:Fetch Outlook Calendar Mails 【发布时间】:2014-06-01 11:49:23 【问题描述】:

在我的收件箱中有一些日历邮件(来自日历的会议请求)。当应用程序从收件箱中获取日历邮件时,它会抛出以下错误:

无法将“System.__ComObject”类型的 COM 对象转换为接口 键入“Microsoft.Office.Interop.Outlook.MailItem”。这个操作 失败,因为对 COM 组件的 QueryInterface 调用 由于 IID 为“00063034-0000-0000-C000-000000000046”的接口失败 出现以下错误:不支持此类接口(异常来自 HRESULT: 0x80004002 (E_NOINTERFACE))。

public void GetOutLookEmails()
 
      oApp = new Outlook.Application();
      oNS = oApp.GetNamespace("MAPI");

      foreach (Outlook.MAPIFolder folder in oNS.Folders)
      
          GetFolders(folder);
      


public void GetFolders(Outlook.MAPIFolder folder)

    if (folder.Folders.Count == 0)
    
        try
        
            if (folder.DefaultItemType == Outlook.OlItemType.olMailItem)
            
                if (folder.Name == "Inbox")
                
                    oEmailsFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
                    Outlook.Items Inboxitems = oEmailsFolder.Items;

                    if (Inboxitems.Count > 0)
                    
                        foreach (Outlook.MailItem mail in Inboxitems)///when compiler comes here it does not create mail object and throws error...because email contains calendar reminder so I guess I need to check if it is olCalendar event or something else that resolves error

                        
                            if (mail != null)
                            
                                 //here I am retrieving concerning data from emails///no issue here
                            
                        
                    
                
            
        
        catch (Exception ex)
        
            throw ex;
        
    
    else
    
        foreach (Outlook.MAPIFolder subFolder in folder.Folders)
        
            GetFolders(subFolder);
        
    

【问题讨论】:

如果您可以发布一些代码会有所帮助:)。 您在使用 Exchange 网络服务吗? 您使用的 COM 引用似乎未在该计算机上注册。 没有,实际上我正在基于 C# 将 Outlook 电子邮件导入我的项目,如果没有与任何日历提醒对应的电子邮件,通常电子邮件将被成功导入...但是当属于任何日历提醒的电子邮件时(收件箱中的 Outlook.MailItem 邮件)给出错误.. 好的 Ahmed ilyas 请指导我如何注册 COM 参考... 【参考方案1】:

您要投射的项目可能属于不同类型 - ContactItem、AppointmentItem、MeetingItem、TaskItem。检查类型,然后强制转换并使用它。

https://msdn.microsoft.com/en-us/library/ms268994.aspx

-维马尔

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。

以上是关于获取 Outlook 日历邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在outlook中发送定期的提醒邮件?例如每月一次或者每两周一次的邮件?

接受请求后 Outlook 日历从收件箱中消失

手机邮箱Microsoft outlook安卓版更新

福利 | 手机邮箱Microsoft outlook安卓版小更新

Outlook 2013 邀请未显示嵌入附件 - 文本/日历;方法 = 请求

如何使用 VBA 识别 MS Outlook 中的日历条目?