C# - Outlook - 获取对新日历的访问权限
C# - Outlook - get access to a new calendar
我正在尝试使用 C# 读取 outlook 中的所有日历,但我无法访问我在 outlook 中创建的日历(右键单击 -> 新日历)。
我正在尝试通过以下方式获取它们:
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
Outlook.MAPIFolder folderss = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
或通过:
Application.Session.Stores
但其中 none 持有我的新日历。
您知道如何联系他们吗?
日历只是 Folders
和 DefaultItemType
OlItemType.olAppointmentItem
。
它们可以在任何 Outlook Stores
的 Folder
层次结构的任何级别上创建。
假设日历是在您的 Stores
之一的根文件夹中创建的,以下 C#
代码将找到它:
void findMyCalendar(String name)
{
string path = null;
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
// there may be more than one Store
// each .ost and .pst file is a Store
Outlook.Folders folders = ns.Folders;
foreach (Outlook.Folder folder in folders)
{
Outlook.MAPIFolder root = folder;
path = findCalendar(root, name);
if (path != null)
{
break;
}
}
MessageBox.Show(path ?? "not found!");
}
// non-recursive search for just one level
public string findCalendar(MAPIFolder root, string name)
{
string path = null;
foreach (Outlook.MAPIFolder folder in root.Folders)
{
if (folder.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase) &&
(folder.DefaultItemType == OlItemType.olAppointmentItem))
{
path = folder.FolderPath;
break;
}
}
return path;
}
我正在尝试使用 C# 读取 outlook 中的所有日历,但我无法访问我在 outlook 中创建的日历(右键单击 -> 新日历)。
我正在尝试通过以下方式获取它们:
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
Outlook.MAPIFolder folderss = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
或通过:
Application.Session.Stores
但其中 none 持有我的新日历。
您知道如何联系他们吗?
日历只是 Folders
和 DefaultItemType
OlItemType.olAppointmentItem
。
它们可以在任何 Outlook Stores
的 Folder
层次结构的任何级别上创建。
假设日历是在您的 Stores
之一的根文件夹中创建的,以下 C#
代码将找到它:
void findMyCalendar(String name)
{
string path = null;
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
// there may be more than one Store
// each .ost and .pst file is a Store
Outlook.Folders folders = ns.Folders;
foreach (Outlook.Folder folder in folders)
{
Outlook.MAPIFolder root = folder;
path = findCalendar(root, name);
if (path != null)
{
break;
}
}
MessageBox.Show(path ?? "not found!");
}
// non-recursive search for just one level
public string findCalendar(MAPIFolder root, string name)
{
string path = null;
foreach (Outlook.MAPIFolder folder in root.Folders)
{
if (folder.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase) &&
(folder.DefaultItemType == OlItemType.olAppointmentItem))
{
path = folder.FolderPath;
break;
}
}
return path;
}