Чтение почты Outlook с C # - PullRequest
       10

Чтение почты Outlook с C #

11 голосов
/ 03 декабря 2011

Я использую следующий код при попытке подключиться к своей почте Outlook. Теперь я, должно быть, делаю что-то не так, потому что я пытаюсь получить входящие письма, и я всегда получаю 0 писем (когда это не так). Это мой код

 Microsoft.Office.Interop.Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
 nameSpace.Logon("", "", Missing.Value, Missing.Value);

 inboxFolder = nameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
 Console.WriteLine("Folders: {0}", inboxFolder.Folders.Count);

У меня есть несколько учетных записей электронной почты в моем профиле Outlook. Когда я пишу следующее

Console.WriteLine("Accounts: {0}",nameSpace.Accounts.Count);
Console.WriteLine("Name: {0}", nameSpace.Accounts[1].DisplayName);

Общее количество учетных записей отображается правильно, как и имя учетной записи, к которой я действительно хочу получить доступ (индекс 1). Теперь проблема в том, что мне нужно получить доступ к определенной папке в этой учетной записи. Как мне это сделать?

1 Ответ

20 голосов
/ 03 декабря 2011

Я мог бы решить это!Это было довольно легко на самом деле.Вот как я могу получить доступ к нужной папке:

// my-account@myserver.com is the name of my account
// Unsent mails is the name of the folder I wanted to access
inboxFolder = nameSpace.Folders["my-account@myserver.com"].Folders["Unsent mails"];

foreach (Microsoft.Office.Interop.Outlook.MailItem mailItem in inboxFolder.Items)
{
    if (mailItem.UnRead) // I only process the mail if unread
    {
        Console.WriteLine("Accounts: {0}", mailItem.Body);
    }    
}
...