我正在尝试使用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
但他们都没有我的新日历。
你有想法如何与他们联系吗?
答案 0 :(得分:1)
日历只有Folders
DefaultItemType
OlItemType.olAppointmentItem
可以在Stores
层次结构的任何级别的任何Outlook 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;
}