https://support.microsoft.com/zh-tw/help/310262/how-to-use-the-microsoft-outlook-object-library-to-send-an-html-formatted-message-by-using-visual-c

using System;
using System.Reflection;     // to use Missing.Value
// TO DO: If you use the Microsoft Outlook 11.0 Object Library, uncomment the following line.
// using Outlook = Microsoft.Office.Interop.Outlook;

namespace SendHTMLMail
{
   public class Class1
   {
      public static int Main(string[] args)
      {
         try
         {
            // Create the Outlook application.
            Outlook.Application  oApp = new Outlook.Application();

            // Get the NameSpace and Logon information.
            Outlook.NameSpace oNS = oApp.GetNamespace("mapi");

            // Log on by using a dialog box to choose the profile.
            oNS.Logon(Missing.Value, Missing.Value, true, true); 

            // Alternate logon method that uses a specific profile.
            // TODO: If you use this logon method, 
            //  change the profile name to an appropriate value.
            //oNS.Logon("YourValidProfile", Missing.Value, false, true); 

            // Create a new mail item.
            Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

            // Set the subject.
            oMsg.Subject = "Send Using OOM in C#";

            // Set HTMLBody.
            String sHtml;
            sHtml = "<HTML>\n" + 
               "<HEAD>\n" +
               "<TITLE>Sample GIF</TITLE>\n" +
               "</HEAD>\n" +
               "<BODY><P>\n" + 
               "<h1><Font Color=Green>Inline graphics</Font></h1></P>\n" +
               "</BODY>\n" + 
               "</HTML>";
            oMsg.HTMLBody = sHtml;

            // Add a recipient.
            Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
            // TODO: Change the recipient in the next line if necessary.
            Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("email address");
            oRecip.Resolve();

            // Send.
            oMsg.Send();

            // Log off.
            oNS.Logoff();

            // Clean up.
            oRecip = null;
            oRecips = null;
            oMsg = null;
            oNS = null;
            oApp = null;
         }

         // Simple error handling.
         catch (Exception e)
         {
            Console.WriteLine("{0} Exception caught.", e);
         }  

         // Default return value.
         return 0;
  
      }
   }
}