У меня есть требование, когда мне нужно получить данные из папки "Pulic floder", которая содержит глобальную информацию, такую как книжные комнаты для обсуждений/встреч и т.д., и эта папка находится на сервере, и я могу получить доступ к ней через oulook. Может ли кто-нибудь помочь мне, как мне получить доступ к такой же программной версии, С#?
Спасибо, Advance, Рави Наик.
Если вы используете исключительно клиент, используйте COM через Outlook. Или используйте WebDav для Exchange 2003 или ознакомьтесь с новыми веб-службами Exchange 2007.
Все зависит от того, где будет выполняться ваш код и/или версии Exchange, прежде чем решить, как это сделать.
Вам просто нужно убедиться, что приложение работает как пользователь с разрешениями Exchange.
Я изменил код на цикл через подпапки, извините за задержку ответа
using System;
using OutLook = Microsoft.Office.Interop.Outlook;
class OutlookFolders
{
static void Main(string[] args)
{
OutLook.Application outlookObj = new OutLook.Application();
GetSubFolders(outlookObj.Session.Folders);
}
private static void GetSubFolders(OutLook.Folders folders)
{
foreach (OutLook.MAPIFolder f in folders)
{
Console.WriteLine(f.Name);
GetSubFolders(f.Folders);
}
}
}
В прошлом мы использовали Outlook Redemption. Он работает через расширенный MAPI, поэтому он имеет больше возможностей, чем Outlook, с Microsoft.Office.Interop.Outlook
Существует еще один полезный инструмент - Outlook Spy, который позволяет вам обнаруживать объектную модель Outlook во время выполнения.
Ksempac, посмотрите здесь путь вперед:
http://msdn.microsoft.com/en-us/library/ms268893(VS.80).aspx
Пространство имен Microsoft.Office.Interop.Outlook ужасно работает, но с небольшим количеством Googling вы можете сделать несколько классных вещей.
Я знаю, что вы сказали С#, но если вы готовы немного поэкспериментировать, вот решение Perl, которое я успешно использовал в прошлом:
http://rasterweb.net/raster/code/src/vcalxical_pl.txt
На сервере Exchange вам необходимо включить IMAP, и это будет работать только с 2003 года. В календаре Exchange 2007 информация больше не сохраняется в папках, поэтому это будет прерываться. Вы также сказали, что вам просто нужно получить данные, а не изменять их.
Это решение будет работать с Exchange 2007: