#c# #outlook
#c# #outlook
Вопрос:
У меня есть фрагмент кода, который может получать задачи из определенного хранилища.
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.Session;
Outlook.Stores stores = ns.Stores;
try
{
foreach (Outlook.Store store in stores)
{
if (store.DisplayName == comboBoxAccounts.Text)
{
Outlook.MAPIFolder tasksFolder = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks);
foreach (Outlook.TaskItem task in tasksFolder.Items)
{
if (task.Subject == comboBoxContacts.Text)
{
comboBoxProperties.Items.Add(task.Body);
}
}
if (tasksFolder != null)
Marshal.ReleaseComObject(tasksFolder);
}
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
statusLabel.Text = ex.ToString();
}
finally
{
if (ns != null)
Marshal.ReleaseComObject(ns);
}
Я пытаюсь собрать эквивалент для добавления задачи в конкретное хранилище. Приведенный ниже код добавляет задачу к основной учетной записи в Outlook, но я хочу использовать другую учетную запись.
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.Session;
try
{
Outlook.TaskItem task = app.CreateItem(Outlook.OlItemType.olTaskItem);
task.Subject = strContact;
task.StartDate = DateTime.Now;
task.DueDate = DateTime.Now.AddDays(2);
task.Status = Outlook.OlTaskStatus.olTaskNotStarted;
task.Body = xDoc.ToString();
task.Save();
}
finally
{
}
Как мне сделать что-то похожее на store.CreateItem()?
Спасибо
ОБНОВЛЕНИЕ: решение
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.Session;
Outlook.Stores stores = ns.Stores;
try
{
foreach (Outlook.Store store in stores)
{
if (store.DisplayName == strAccount)
{
Outlook.MAPIFolder tasksFolder = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks);
Outlook.TaskItem task = (Outlook.TaskItem)tasksFolder.Items.Add(Outlook.OlItemType.olTaskItem);
task.Subject = strContact;
task.StartDate = DateTime.Now;
task.DueDate = DateTime.Now.AddDays(2);
task.Status = Outlook.OlTaskStatus.olTaskNotStarted;
task.Body = xDoc.ToString();
task.Save();
}
}
}
finally
{
}
Ответ №1:
Не используйте Application.CreateItem
. Извлеките хранилище из Application.Session.Stores
коллекции, вызовите Store.GetDefaultFolder(olFolderTasks)
, добавьте элемент в эту папку с помощью MAPIFolder.Items.Add
.
Комментарии:
1. Идеальный. Спасибо, Дмитрий. 😀