C#-Outlook-访问新日历
我正在尝试使用C#读取outlook中的所有日历,但在访问outlook中创建的日历时遇到问题(右键单击->新建日历) 我试图通过以下方式获得他们:C#-Outlook-访问新日历,c#,calendar,outlook,C#,Calendar,Outlook,我正在尝试使用C#读取outlook中的所有日历,但在访问outlook中创建的日历时遇到问题(右键单击->新建日历) 我试图通过以下方式获得他们: Outlook.Application app = new Outlook.Application(); Outlook.NameSpace ns = app.GetNamespace("MAPI"); Outlook.MAPIFolder folderss = ns.GetDefaultFolder(Outlook.OlDefaultFold
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
Outlook.MAPIFolder folderss = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
或通过:
Application.Session.Stores
但是没有一个有我的新日历
您知道如何访问它们吗?日历只是
文件夹
,带有DefaultItemType
它们可以在
文件夹
层次结构的任何级别的Outlook存储
中创建
假设日历是在某个存储区的根文件夹中创建的,则以下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;
}