Why can't I retrieve ALL MailItems using interop outlook?

c#, interop, outlook, visual-studio

Solution

I had this same exact problem - My workaround was just to create a `List<MailItem>` and loop through that. Make sure the emails aren't in subfolders though, otherwise they won't be found.

Outlook.Application app = new Outlook.Application();
Outlook.NameSpace outlookNs = app.GetNamespace("MAPI");
Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);

List<MailItem> ReceivedEmail = new List<MailItem>(); 
foreach (Outlook.MailItem mail in emailFolder.Items)               
    ReceivedEmail.Add(mail);

foreach (MailItem mail in ReceivedEmail)
{
    //do stuff
}

Problem

I'm trying to use Microsoft.Office.Interop.Outlook to retrieve emails from my Outlook inbox. This is my code: ``` Application app = new Application(); NameSpace ns = app.Session; MAPIFolder inbox = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox); Items items = inbox.Items; foreach (Microsoft.Office.Interop.Outlook.MailItem mail in items) { if (mail as MailItem != null) { Console.WriteLine(mail.Subject.ToString()); Console.WriteLine(mail.Body.ToString()); Console.ReadKey(); } } ``` When I do this, it works--sort of. It only shows one email. There should be three. The email it's showing is the oldest one in there... why wouldn't I be able to get all three? Is there some other type of mail besides MailItem that would be in my inbox?

Original source