#c# #outlook-2007
#c# #outlook-2007
Вопрос:
Я использую приведенный ниже код для проверки непрочитанной почты из Outlook, и все работает нормально для папки «Входящие» по умолчанию
Microsoft.Office.Interop.Outlook.Application oApp;
Microsoft.Office.Interop.Outlook._NameSpace oNS;
Microsoft.Office.Interop.Outlook.MAPIFolder oFolder;
Microsoft.Office.Interop.Outlook._Explorer oExp;
oApp = new Microsoft.Office.Interop.Outlook.Application();
oNS = (Microsoft.Office.Interop.Outlook._NameSpace)oApp.GetNamespace("MAPI");
oFolder = oNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
oExp = oFolder.GetExplorer(false);
oNS.Logon(Missing.Value, Missing.Value, false, true);
Microsoft.Office.Interop.Outlook.Items items = oFolder.Items;
foreach (Object mail in items)
{
if ((mail as Microsoft.Office.Interop.Outlook.MailItem) != null amp;amp; (mail as Microsoft.Office.Interop.Outlook.MailItem).UnRead == true)
{
string sasd= (mail as OutLook.MailItem).Subject.ToString();
}
}
Но я хочу проверить другую папку [которую я создал [Name = «Inbox_Personal»]]. Как я могу это сделать?
Редактировать 1
Мы будем признательны за любое предложение или ссылку на руководство.
Ответ №1:
Я использую нечто подобное следующему для доступа к различным учетным записям в Outlook (2007 и выше; хранилища до 2007 года не существовали, и вам просто нужно посмотреть папки)
Microsoft.Office.Interop.Outlook.Application oApp;
Microsoft.Office.Interop.Outlook.NameSapce oNS = oApp.GetNameSpace(“Mapi”);
foreach(Microsoft.Office.Interop.Outlook.Store oAccounts in oNS.Stores)
{
// get the right account:
Microsoft.Office.Interop.Outlook.Store oDesiredAccount;
foreach(Microsoft.Office.Interop.Outlook.Store oAccount in oAccounts)
{
if(oAccount.DisplayName.ToLower.Equals(“<<Name of Account>>”)
{
oDesiredAccount = oAccount;
}
}
// do stuff with the account
Microsoft.Office.Interop.Outlook.MAPIFolder root = oAccount.GetRootFolder();
// ....
}
Ответ №2:
var fld = (Outlook.Folder)app.Session.GetFolderFromID("Inbox_Personal", storeID);
Я не могу вспомнить, откуда взять идентификатор хранилища, но он должен быть сохранен в вашем объекте сеанса или объекте папки по умолчанию.
РЕДАКТИРОВАТЬ Сейчас я посмотрел в проекте: StoreID в GetFolderFromID необязателен (тип.отсутствует).
Идентификатор хранилища по умолчанию можно найти здесь:
app.Session.DefaultStore.StoreID
Комментарии:
1. Я застрял на идентификаторе хранилища … 🙁
2. Я не получаю свойство DefaultStore для oApp.Session .
3. Должно быть там. Или попробуйте это без DefaultStoreID