13 Jun

C# Send an Email Using Outlook Program

To send an email using outlook program, we need to add a reference to the dynamic link library for Outlook which is called Microsoft.Office.Interop.Outlook.dll. To do this, firstly go to your solution explorer and click on add a reference. Then, add Microsoft.Office.Interop.Outlook.dll.

Sample code and usage are below.

Usage:

            //using MsOutlook = Microsoft.Office.Interop.Outlook;
            //You must add using statement.

            string[] attachFiles = new string[] { 
                @"C:\test.txt"
            };
            SendMailWithOutlook("Subject1", "This is an example.", "test@csharpexample.com", attachFiles, MailSendType.SendDirect);

Code:

        public enum MailSendType
        {
            SendDirect = 0,
            ShowModal = 1,
            ShowModeless = 2,
        }

        public bool SendMailWithOutlook(string subject, string htmlBody, string recipients, string[] filePaths, MailSendType sendType)
        {
            try
            {
                // create the outlook application.
                MsOutlook.Application outlookApp = new MsOutlook.Application();
                if (outlookApp == null)
                    return false;

                // create a new mail item.
                MsOutlook.MailItem mail = (MsOutlook.MailItem)outlookApp.CreateItem(MsOutlook.OlItemType.olMailItem);

                // set html body. 
                // add the body of the email
                mail.HTMLBody = htmlBody;

                //Add attachments.
                if (filePaths != null)
                {
                    foreach (string file in filePaths)
                    {
                        //attach the file
                        MsOutlook.Attachment oAttach = mail.Attachments.Add(file);
                    }
                }

                mail.Subject = subject;
                mail.To = recipients;
                
                if (sendType == MailSendType.SendDirect)
                    mail.Send();
                else if (sendType == MailSendType.ShowModal)
                    mail.Display(true);
                else if (sendType == MailSendType.ShowModeless)
                    mail.Display(false);

                mail = null;
                outlookApp = null;
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }