【问题标题】:How to display shared calendar in outlook using c#?如何使用 c# 在 Outlook 中显示共享日历?
【发布时间】:2013-07-31 05:54:37
【问题描述】:

我想显示共享日历。我在网上搜索,我找到了这个代码:

 static void Main(string[] args)
    {

        Outlook.Application objOLApp;
        Outlook.MAPIFolder objFolder;
        Outlook.Explorer objExplorer;
        Outlook.MAPIFolder objSubFolder;
        Outlook.AppointmentItem objCalenderItem;
        Outlook.Folders objOutlookFolders;
        int intFolderCtr;
        int intSubFolderCtr;
        int intAppointmentCtr;
        // >> Initialize The Base Objects
        objOLApp = new Outlook.Application();
        objOutlookFolders = objOLApp.Session.Folders;
        // >> Loop Through The PST Files Added n Outlook
        for (intFolderCtr = 1; intFolderCtr <= objOutlookFolders.Count; intFolderCtr++)
        {
            objFolder = objOutlookFolders[intFolderCtr];
            objExplorer = objFolder.GetExplorer();
            // >> Loop Through The Folders In The PST File
            for (intSubFolderCtr = 1; intSubFolderCtr <= objExplorer.CurrentFolder.Folders.Count; intSubFolderCtr++)
            {
                objSubFolder = objExplorer.CurrentFolder.Folders[intSubFolderCtr];
                // >> Check if Folder Contains Appointment Items
                if (objSubFolder.DefaultItemType == Outlook.OlItemType.olAppointmentItem)
                {
                    // >> Loop Through Appointment Items
                    for (intAppointmentCtr = 1; intAppointmentCtr <= objSubFolder.Items.Count; intAppointmentCtr++)
                    {
                        // >> Get Teh Calender Item From The Calender Folder
                        objCalenderItem = objSubFolder.Items[intAppointmentCtr];
                        // >> Process Appointment Item Accordingly
                        Console.WriteLine(objCalenderItem.Subject);
                        Console.WriteLine(objCalenderItem.Location + "," + objCalenderItem.Start.ToLongDateString());
                        Console.WriteLine();
                        Console.WriteLine();
                    }
                }
            }
        }
        // >> Close Application
       // objOLApp.Quit();
        // >> Release COM Object
        System.Runtime.InteropServices.Marshal.ReleaseComObject(objOLApp);
        objOLApp = null;
        Console.ReadLine();
    }

但它只能看到我的约会。

我想查看所有共享日历。因为我安排了会议,但我不知道其他人的忙碌或空闲。那么如何显示别人的日历呢?

编辑:

我改变了这一行

objOutlookFolders = objOLApp.Session.Folders;

objOutlookFolders = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderCalendar).Folders;

我添加了这个

 NameSpace oNs = objOLApp.GetNamespace("MAPI");
 Recipient oRep = oNs.CreateRecipient(objOLApp.Session.CurrentUser.Name);

但我仍然得到错误。

新版本是

        static void Main(string[] args)
        {

            Outlook.Application objOLApp;
            Outlook.MAPIFolder objFolder;
            Outlook.Explorer objExplorer;
            Outlook.MAPIFolder objSubFolder;
            Outlook.AppointmentItem objCalenderItem;
            Outlook.Folders objOutlookFolders;
            int intFolderCtr;
        int intSubFolderCtr;
        int intAppointmentCtr;
        // >> Initialize The Base Objects
        objOLApp = new Outlook.Application();



        NameSpace oNs = objOLApp.GetNamespace("MAPI");
        Recipient oRep = oNs.CreateRecipient(objOLApp.Session.CurrentUser.Name);


        oRep.Resolve();
        //if (oRep.Resolved)
            objOutlookFolders = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderCalendar).Folders;

        //else
        //    objOutlookFolders = objOLApp.Session.Folders;


        // >> Loop Through The PST Files Added n Outlook
        for (intFolderCtr = 1; intFolderCtr <= objOutlookFolders.Count; intFolderCtr++)
        {
            objFolder = objOutlookFolders[intFolderCtr];
            objExplorer = objFolder.GetExplorer();
            // >> Loop Through The Folders In The PST File
            for (intSubFolderCtr = 1; intSubFolderCtr <= objExplorer.CurrentFolder.Folders.Count; intSubFolderCtr++)
            {
                objSubFolder = objExplorer.CurrentFolder.Folders[intSubFolderCtr]; 
                // >> Check if Folder Contains Appointment Items
                if (objSubFolder.DefaultItemType == Outlook.OlItemType.olAppointmentItem)
                {
                    // >> Loop Through Appointment Items
                    for (intAppointmentCtr = 1; intAppointmentCtr <= objSubFolder.Items.Count; intAppointmentCtr++)
                    {
                        // >> Get Teh Calender Item From The Calender Folder
                        objCalenderItem = objSubFolder.Items[intAppointmentCtr];
                        // >> Process Appointment Item Accordingly
                        Console.WriteLine(objCalenderItem.Subject);
                        Console.WriteLine(objCalenderItem.Location + "," + objCalenderItem.Start.ToLongDateString());
                        Console.WriteLine();
                        Console.WriteLine();
                    }
                }
            }
        }
        // >> Close Application
        // objOLApp.Quit();
        // >> Release COM Object
        System.Runtime.InteropServices.Marshal.ReleaseComObject(objOLApp);
        objOLApp = null;
        Console.ReadLine();

    }

请帮帮我.. 我还在工作。但它没有。

【问题讨论】:

    标签: visual-studio c#-4.0 outlook mapi


    【解决方案1】:

    使用 Namespace.GetSharedDefaultFolder 打开其他用户的默认日历文件夹。

    【讨论】:

    • 感谢您的回复。但我有一个问题要问你。我如何使用 Namespace.GetSharedDefaultFolder?我是新的 Outlook 应用,对不起:/
    • 调用 objOLApp.Session.CreateRecipient 传递其他邮箱名称,然后将返回的收件人传递给 objOLApp.Session.GetSharedDefaultFolder(..., olFolderCalendar)
    • 我使用这样的方法 objOutlookFolders = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderCalendar); objOutlookFolders.Display();但我不想使用 Outlook 显示。此方法使用前景。我想显示可编程性。
    • 我不明白 - 您不想在 Outlook 中显示该文件夹吗?那你为什么叫 MAPIFolder.Display 呢?您的意思是您不想在单独的窗口中显示该文件夹吗?然后设置 Application.ActiveExplorer.CurrentFolder 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多