Allow program to send mail through outlook 2016

To allow a program to send mail through Outlook 2016, you'll need to use the Outlook Object Model and set up a COM add-in. Here's a step-by-step guide to help you achieve this:

Prerequisites:

  1. Outlook 2016 must be installed and configured on the machine.
  2. The program you want to send mail from must be able to interact with the Outlook Object Model.

Step 1: Create a new COM add-in project

  1. Open Visual Studio and create a new project.
  2. Choose "Visual C#" or "Visual Basic" as the project type, depending on your preferred programming language.
  3. Select "Class Library" as the project template.
  4. Name your project (e.g., "OutlookMailSender").

Step 2: Add references to Outlook Object Model

  1. In your project, right-click on the References folder and select "Add Reference..."
  2. Browse to the "C:\Program Files\Microsoft Office\Office16\OUTLOOK.EXE" directory (or the equivalent path on your machine).
  3. Select "Microsoft Outlook XX.X Object Library" (where XX.X is the version number of your Outlook installation).
  4. Click "OK" to add the reference.

Step 3: Create an Outlook application object

  1. In your project, create a new class (e.g., "OutlookApp") that will interact with Outlook.
  2. In this class, create an instance of the Outlook.Application object:
    
    using Outlook = Microsoft.Office.Interop.Outlook;

public class OutlookApp { private Outlook.Application _app;

public OutlookApp()
{
    _app = new Outlook.Application();
}

}

**Step 4: Create a new mail item**

1. In your OutlookApp class, create a new method that creates a new mail item:
```csharp
public void SendMail(string subject, string body, string toAddress)
{
    Outlook.MailItem mailItem = _app.CreateItem(Outlook.OlItemType.olMailItem);
    mailItem.Subject = subject;
    mailItem.Body = body;
    mailItem.To = toAddress;
}

Step 5: Set up the COM add-in

  1. In your project, create a new class (e.g., "OutlookAddin") that will register the COM add-in.
  2. In this class, implement the IDTExtensibility2 interface:
    
    using System.Runtime.InteropServices;

public class OutlookAddin : IDTExtensibility2 { public void OnConnection(object application, ext_ConnectMode connectMode, ref System.Array custom) { // Register the add-in _app = (Outlook.Application)application; }

public void OnDisconnection(ext_DisconnectMode disconnectMode, ref System.Array custom)
{
    // Unregister the add-in
    _app = null;
}

}

**Step 6: Register the COM add-in**

1. In your project, create a new file (e.g., "OutlookAddin.csproj") that will register the COM add-in.
2. In this file, add the following code:
```csharp
using System.Runtime.InteropServices;

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class OutlookAddin : IDTExtensibility2
{
    //...
}

[ComVisible(true)]
[ProgId("OutlookMailSender.OutlookAddin")]
public class OutlookAddin : IDTExtensibility2
{
    //...
}

Step 7: Test the COM add-in

  1. Build and deploy your project.
  2. Open Outlook 2016 and go to "File" > "Options" > "Add-ins".
  3. Check the box next to "OutlookMailSender.OutlookAddin" to enable the add-in.
  4. Run your program and call the SendMail method to send a test email.

That's it! Your program should now be able to send mail through Outlook 2016 using the Outlook Object Model.