Share via


Read outlook email by interop.office.outlook.dll

Question

Wednesday, November 28, 2018 4:47 AM

Read outlook email based on filters like
From email address
Subject
Date

All replies (2)

Thursday, November 29, 2018 6:23 AM âś…Answered

Hi Guhananth,

Read outlook email based on filters like
From email address
Subject
Date

You could refer to the following code to read emails, after that you could filter the emails:

using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Outlook;

        static void Main(string[] args)
        {
            Application outlookApplication = null;
            NameSpace outlookNamespace = null;
            MAPIFolder inboxFolder = null;
            Items mailItems = null;

            try
            {
                outlookApplication = new Application();
                outlookNamespace = outlookApplication.GetNamespace("MAPI");
                inboxFolder = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
                mailItems = inboxFolder.Items;

                Console.WriteLine(mailItems.Count);

                foreach (MailItem item in mailItems)
                {
                    var stringBuilder = new StringBuilder();
                    stringBuilder.AppendLine("From: " + item.SenderEmailAddress);
                    stringBuilder.AppendLine("To: " + item.To);
                    stringBuilder.AppendLine("CC: " + item.CC);
                    stringBuilder.AppendLine("");
                    stringBuilder.AppendLine("Subject: " + item.Subject);
                    stringBuilder.AppendLine(item.Body);

                    Console.WriteLine(stringBuilder);
                    Marshal.ReleaseComObject(item);
                }
            }
            //Error handler.
            catch (System.Exception e)
            {
                Console.WriteLine("{0} Exception caught: ", e);
            }
            finally
            {
                ReleaseComObject(mailItems);
                ReleaseComObject(inboxFolder);
                ReleaseComObject(outlookNamespace);
                ReleaseComObject(outlookApplication);
            }

            Console.WriteLine("OK");
            Console.ReadKey();
        }

        private static void ReleaseComObject(object obj)
        {
            if (obj != null)
            {
                Marshal.ReleaseComObject(obj);
                obj = null;
            }
        }

More details, please check these articles:

Here's how to read emails from Outlook using C#

Outlook Integration in C#

How to use the Microsoft Outlook Object Library to retrieve a message from the Inbox by using Visual C#

Best regards,
Dillion


Thursday, June 20, 2019 4:07 PM

Hi,

Note though that Outlook is an end user application and was never intended to be used as a programming library:
https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

I would favor using https://en.wikipedia.org/wiki/Post_Office_Protocol, https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol or a dedicated API for my mail server.