Получайте непрочитанные письма из Outlook - PullRequest
8 голосов
/ 13 января 2010

Есть ли способ получить всю почту из определенной папки в мое приложение?

Ответы [ 4 ]

13 голосов
/ 13 января 2010

Отметьте ссылку . Введение в программирование в Outlook объяснит все более четко.

Вы можете перебирать почтовые элементы. Пример кода

using System.Runtime.InteropServices;
using OutLook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

    OutLook.Application oApp;
             OutLook._NameSpace oNS;
             OutLook.MAPIFolder oFolder;
             OutLook._Explorer oExp;

             oApp = new OutLook.Application();
             oNS = (OutLook._NameSpace)oApp.GetNamespace("MAPI");
             oFolder = oNS.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderInbox);
             oExp = oFolder.GetExplorer(false);
             oNS.Logon(Missing.Value, Missing.Value, false, true);

        OutLook.Items items = oFolder.Items;
        foreach (OutLook.MailItem mail in items)
                        {

                            if (mail.UnRead == true)
                            {
                        }
        }

Edit: Ссылка на другие папки

oFolder.Folders["Foldername"]

Код OutLook

Общие задачи Outlook

4 голосов
/ 04 сентября 2015

Циклическая проверка всех элементов в папке - ужасная идея, особенно если вы работаете с интернет-магазином Exchange. Items.Find/FindNext или Items.Restrict - это путь.

Найти / FindNext:

OutLook.Items items = oFolder.Items;
OutLook.MailItem mail = items.Find("[Unread] = true");
while (mail != null)
{
  MessageBox.Show(mail.Subject);
  mail = items.FindNext();
}

Items.Restrict:

OutLook.Items items = oFolder.Items.Restict("[Unread] = true")
foreach (OutLook.MailItem mail in items)
{
  MessageBox.Show(mail.Subject);
}
2 голосов
/ 13 января 2010

Есть несколько примеров доступа к папкам Outlook здесь , один из которых имеет дело именно с непрочитанной почтой.

Редактировать: есть статья в КБ, посвященная доступу к папкам из C #, Примеры программирования, которые могут ссылаться на элементы и папки в Outlook с помощью Visual C # .NET

Чтобы открыть папку другого пользователя, используйте GetSharedDefaultFolder

0 голосов
/ 28 мая 2018
 foreach (Object Unreadmail in folderItems)
            {
                if ((Unreadmail as Outlook.MailItem) != null && (Unreadmail as Outlook.MailItem).UnRead == true)
                {
                  //DO Your action Here
                }
            }

Я столкнулся с ошибкой исключения "COM_object" с указанными выше решениями, более подробную информацию см. здесь

...