Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a new email with c# and attach a file Outlook 2016

Tags:

c#

email

outlook

I have a list of documents and email addresses.

I am trying to create a method I can use to iterate throw the list of emailAddresses and for each creates a new email I Outlook and attaches the corresponding document.

The Creating the MailItem is was I get stuck. Found a sample on MSDN that should work from Office 2013 and forward.

This is what I have so far:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Outlook;

namespace Test_Invoice
{
    class SendviaMail
    {
        string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
        public void Send()
        {
            MailItem eMail = new MailItem();

            eMail.Subject = "Here is Your Invoice";
            eMail.To = "[email protected]";
            eMail.Body = "Dette er en test mail for TestMailApp";

        }

        public void Send(string email, string filename)
        {

        }
    }
}

I've been trying to understand the documentation on MSDN and read thru a few posts on here.

As far as I can figure out, the next step is to add the attachment (the demo file) If I understand it right I need something like

eMail.AttachmentAdd = demofile;

But that does not work.

It might be me that does not understand the library correctly. Looking at this sample from MSDN https://msdn.microsoft.com/en-us/library/bb644320.aspx

Results in this code:

using Microsoft.Office.Interop.Outlook;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;

namespace Test_Invoice
{
    class SendviaMail
    {
        string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
        public void Send()
        {
            Outlook.MailItem mail = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
            mail.Subject = "Quarterly Sales Report FY06 Q4";

            //MailItem eMail = new MailItem();

            //eMail.Subject = "tilmelding og faktura";
            //eMail.To = "[email protected]";
            //eMail.Body = "Dette er en test mail for TestMailApp";
            //eMail.AttachmentAdd
        }

        public void Send(string email, string filename)
        {

        }
    }
}
like image 659
Jonas Avatar asked Oct 20 '25 06:10

Jonas


1 Answers

The fixed sample code should look like this:

var ol = new Outlook.Application();
Outlook.MailItem mail = ol.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;

note that you need to declare the Outlook alias with your using statement:

using Outlook = Microsoft.Office.Interop.Outlook;

(as you already did) ... but must also remove

using Microsoft.Office.Interop.Outlook;

to avoid Visual Studio confusing your references.

The rest of the MSDN example should work as expected I don't have any other samples I can point you to, so your best bet is searching for Microsoft.Office.Interop.Outlook or explore linked questions here.

like image 135
Filburt Avatar answered Oct 22 '25 19:10

Filburt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!