gpt4 book ai didi

c# - 在 C# 中获取 session 详细信息的 Outlook API

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:10 29 4
gpt4 key购买 nike

我正在尝试使用 c# windows 应用程序为 outlook 创建一个 API。为此,要获取所有 AppointmentItem,我正在使用以下代码并且它正在运行。

Microsoft.Office.Interop.Outlook.Application oApp = null;
Microsoft.Office.Interop.Outlook.NameSpace mapiNamespace = null;
Microsoft.Office.Interop.Outlook.MAPIFolder CalendarFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder Inbox = null;
Microsoft.Office.Interop.Outlook.Items outlookCalendarItems = null;

oApp = new Microsoft.Office.Interop.Outlook.Application();
mapiNamespace = oApp.GetNamespace("MAPI"); ;
mapiNamespace.Logon("", "",true, true);
CalendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);
CalendarFolder = oApp.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);
DateTime startTime = DateTime.Now;
DateTime endTime = startTime.AddDays(5);
//string filter = "[Start] >= '" + startTime.ToString("g") + "' AND [End] <= '" + endTime.ToString("g") + "'";
outlookCalendarItems = CalendarFolder.Items;
// outlookCalendarItems.Restrict(filter);
// outlookCalendarItems.Sort("Start");
outlookCalendarItems.IncludeRecurrences = true;

int i = 0;
foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
{

dataGridCalander.Rows.Add();
dataGridCalander.Rows[i].Cells[0].Value = i + 1;

if (item.Subject != null)
{
dataGridCalander.Rows[i].Cells[1].Value = item.Subject;
}
}

以类似的方式,我想获取在 outlook 中创建的可用 session 室以及该特定 session 室的状态(可用或不可用)。提前致谢。

最佳答案

我注意到下面一行代码:

 foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)

不要遍历循环中的所有 Outlook 项目。使用 Find/FindNext 或 Restrict 方法查找所需的子集。

或者使用 GetTable Folder 类的方法,该方法获取包含由 Filter 过滤的项目的 Table 对象。如果 Filter 是空字符串或省略 Filter 参数,则 GetTable 返回一个表,其中的行代表文件夹中的所有项目。如果 Filter 为空字符串或省略 Filter 参数且 TableContents 为 olHiddenItems,则 GetTable 返回一个表,其中的行表示文件夹中的所有隐藏项。

Sub DemoTable()  
'Declarations
Dim Filter As String
Dim oRow As Outlook.Row
Dim oTable As Outlook.Table
Dim oFolder As Outlook.Folder

'Get a Folder object for the Inbox
Set oFolder = Application.Session.GetDefaultFolder(olFolderInbox)

'Define Filter to obtain items last modified after May 1, 2005
Filter = "[LastModificationTime] > '5/1/2005'"
'Restrict with Filter
Set oTable = oFolder.GetTable(Filter)

'Enumerate the table using test for EndOfTable
Do Until (oTable.EndOfTable)
Set oRow = oTable.GetNextRow()
Debug.Print (oRow("Subject"))
Debug.Print (oRow("LastModificationTime"))
Loop
End Sub

Outlook 对象模型不提供房间的任何方法或属性。您可以使用 OpenSharedFolder命名空间类的方法,用于打开房间的共享日历。

考虑改用 EWS。参见 EWS Managed API, EWS, and web services in Exchange获取更多信息。

关于c# - 在 C# 中获取 session 详细信息的 Outlook API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29367227/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com