Blue Theme Orange Theme Green Theme Red Theme
 
6 Months Free & No Setup Fees ASP.NET Hosting!
Home | Forums | Videos | Advertise | Certifications | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
Discover the top 5 tips for understanding .NET Interop
Search :       Advanced Search »
Home » Internet & Web » Sending Emails Through Outlook using C# and VB.NET

Sending Emails Through Outlook using C# and VB.NET

In this article I will give you an example of how to add an e-mail to your Microsoft Outlook outbox folder using C# and/or VB.net.

Page Views : 134028
Downloads : 4070
Rating :
 Rate it
Level : Intermediate
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
Download Files:
SendingEmailsThroughOutlookCB.zip
 
 
DevExpress Free UI Controls
Become a Sponsor
Mindcracker MVP Summit 2012
Become a Sponsor
 Tag Cloud
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 

Introduction

In this article I will give you an example of how to add an e-mail to your Microsoft Outlook outbox folder using C# and/or VB.net. This example also show how easy it is to call functions written in VB.net from C#

The code consists of three classes: Form1.cs, CSharp.OutlookMail.cs, VBNET.OutlookMail.vb.

Form1: a simple Windows Forms which shows how easy it is to call a C# or VB.net function.

CSharp.OutlookMail.cs: C# class with one function to add an e-mail to outlook outbox.

VBNET.OutlookMail.cs: VB.net class with one function to add an e-mail to outlook outbox.

The first thing you need to do is to add a reference to "Microsoft Outlook 9.0 Object Library" Click on add Reference, select the COM tab and select "Microsoft Outlook 9.0 Object Library".

public class OutlookMail
{
private Outlook.Application oApp;
private Outlook._NameSpace oNameSpace;
private Outlook.MAPIFolder oOutboxFolder;
public OutlookMail()
{
//Return a reference to the MAPI layer
oApp = new Outlook.Application(); 

The Namespace object represents the messaging service provider. In order to get access to all Outlook folders and items we have to use the MAPI namespace.

oApp = new Outlook.Application();
oNameSpace= oApp.GetNamespace("MAPI");

Now that we have the MAPI namespace, we can log on using using:

<mapinamespace>.Logon(object Profile, object Password, object ShowDialog, object NewSession)

Profile: This is a string value that indicates what MAPI profile to use for logging on. Set this to null if using the currently logged on user, or set to an empty string ("") if you wish to use the default Outlook Profile.

Password: The password for the indicated profile. Set to null if using the currently logged on user, or set to an empty string ("") if you wish to use the default Outlook Profile password.

ShowDialog: Set to True to display the Outlook Profile dialog box.

NewSession: Set to True to start a new session or set to False to use the current session.

oNameSpace.Logon(null,null,true,true);

We now choose which folder we want to work with. A MAPIFolder object represents a single Outlook folder. For example you could use:

Calender: Outlook.OlDefaultFolders.olFolderCalendar
Contacts: Outlook.OlDefaultFolders.olFolderContacts
Inbox: Outlook.OlDefaultFolders.olFolderInbox

For this example we choose the Outbox folder

//gets defaultfolder for my Outlook Outbox
oOutboxFolder = oNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox);
}

The following function takes 3 string as parameters. These will be the values that we will add to the to, subject and the email body fields. We create a MailItem, and set the To, Subject, and Body fields.

public void addToOutBox(string toValue, string subjectValue, string bodyValue)
{
Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
oMailItem.To = toValue;
oMailItem.Subject = subjectValue;
oMailItem.Body = bodyValue;
oMailItem.SaveSentMessageFolder = oOutboxFolder;
//uncomment this to also save this in your draft
//oMailItem.Save();
//adds it to the outbox
oMailItem.Send();
}
}

Conclusion:

Microsoft .NET is extremely powerful and yet simple to work with. In this example, I showed how to add e-mail to Outlook outbox. In the next verion, I will add functions to add tasks, calender and contacts items.

Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
Login to add your contents and source code to this article
 [Top] Rate this article
 
 About the author
 
casper boekhoudt
Caspar Boekhoudt is a consultant for Information Methodologies Inc. (imi), higher ed's leading enterprise web integrator. He has a M.S. in Computer Science and is a Sun Certified Programmer for the Java 2 Platform and IBM Certified Developer, XML and Related Technologies V1.
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Discover the top 5 tips for understanding .NET
Ricky Leeks presents the top 5 tips for understanding .NET Interoperability. Learn more.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
ASP.NET 4 Hosting
Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites – Click Here!
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
Discover the top 5 tips for understanding .NET Interop
Become a Sponsor
 Comments
MAPI FOLDER by shalini On May 19, 2007
What is MAPI folder? I couldnt understand MAPI ?
Reply | Email | Modify 
Re: MAPI FOLDER by kondala On March 11, 2008

MAPI means  Microsoft Application Programming interface..

MAPI is inbuit one with the Microsoft Exchnage Server for mailing functionality using Outlook..

Reply | Email | Modify 
Don´t have library by Jorge On June 1, 2007
Hi, Where can I find this library: Microsoft Outlook 9.0 Object Library I can´t find it on my .NET Thanks
Reply | Email | Modify 
How to add attachments by Mohamed On August 31, 2007
Hi, The article is good. How to add attachments to the mail.
Reply | Email | Modify 
Re: How to add attachments by kondala On March 11, 2008
MailObject.attachment=attachmnet file;
Reply | Email | Modify 
adding reference:option not available in COM tab by Don On February 1, 2008
I am using MS2005 with SQL server2005 , In my add reference->COM tab -> Microsoft Outlook 9.0 Object Library -option not available. so please tell me how to add reference in my application
Reply | Email | Modify 
Re: adding reference:option not available in COM tab by kondala On March 11, 2008

add the microsoft outlook 12.0 object library in place of 9.0..

this is updated library than 9.0..

Reply | Email | Modify 
how to get tablenames to a combobox or dropdown control from sqldatabase using C# and asp.net? by a On March 20, 2008
replay me soon
Reply | Email | Modify 
Remove from Outbox by Jon On September 13, 2008
Very helpful article and download.

Add the line

oMailItem.DeleteAfterSubmit = true;

before the .Send line in addToOutbox in OutlookMail.cs to have the email removed from the Outbox after it sends.

Also, I needed the following line at the top of OutlookMail.cs

using Outlook = Microsoft.Office.Interop.Outlook;
Reply | Email | Modify 
Fantastic by Craig On October 24, 2008
Thanks so musch this is great
Reply | Email | Modify 
outlook express by nir On March 1, 2009
Hello , I tried to use this code with outlook express with no success someone can help please ? Nir
Reply | Email | Modify 
How to detect that outlook is installed in my computer by djelloul On May 13, 2009
hello

How to detect that outlook is installed in my computer;

best regard
Reply | Email | Modify 
MAPI is depricated we don't have to use MAPI and Namespace. VERY GOOD Article here is slightly modified code without MAPI by Abid On April 22, 2010
 

public partial class SendEmailOutlook : System.Web.UI.Page

{

private Outlook.Application oApp;

//private Outlook._NameSpace oNameSpace; // we don't need this

//private Outlook.MAPIFolder oOutboxFolder;//MAPIFolder depricated so don't use

public SendEmailOutlook() // this is my Constructor

{

oApp = new Outlook.Application();

//oNameSpace = oApp.GetNamespace("MAPI"); // no need to use this

//oNameSpace.Logon(null, null,true, true); // we don't need this aswell takes current automatically

//oOutboxFolder = oNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox); //don't need this since No Namespace is used

}

public void AddToOutBox(string toValue, string subjectValue, string bodyValue)

{

Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

oMailItem.To = toValue;// we can use Semicolon delimited string to send to many users.

oMailItem.Subject = subjectValue;

oMailItem.Body = bodyValue;

oMailItem.BodyFormat = OlBodyFormat.olFormatRichText;

//Copy of sent email is saved in Sent items folder out outlook by default

oMailItem.Send();

}

//I have used 3 text boxes in the page and then a Button and its click event handler is here
protected
void BtnSendEmail_Click(object sender, EventArgs e)

{

AddToOutBox(TxtBxTo.Text, TxtBxSubject.Text, TxtBxBody.Text);

}

}

Reply | Email | Modify 
Re: MAPI is depricated we don't have to use MAPI and Namespace. VERY GOOD Article here is slightly modified code without MAPI by pankaj On March 3, 2011
Hi I am trying to send the automatic emails using outlook. I am able to send it when outlook is open on my machine...but i get the exception if it is closed... "The server is not available. Contact your administrator if this condition persists" Any help is appreciated...
Reply | Email | Modify 
Open Outlook folder dialog and select folder using VB.NET by eliza On June 2, 2010

Following is the code sample used to display the outlook folder dialog using VB.NET

 
[VB.NET CODE STARTS]

Dim objOutlook As Object
Dim objOlNamespace As Object
Dim objOlFolder As Object

objOutlook = CreateObject("Outlook.Application") ' create outlook application object at the run time
objOlNamespace = objOutlook.GetNamespace("MAPI")
objOlFolder = objContactsNS.PickFolder ' displays the folder dialog
 
Reply | Email | Modify 
hi man by mohanad On August 9, 2010
this for this pro but i need add the attachment file thx you
Reply | Email | Modify 
V Good by zb On January 13, 2011
what about attaching Files..?
Reply | Email | Modify 
Mail going in "Junk Mails" by Preeti On February 22, 2011
I used above code to send mail. But at receiver end mails are moving to "Junk Mail". How to resolve this ?
Reply | Email | Modify 
Not working with webapp by Manish On June 9, 2011
Hi casper, Thanks for this nice article, I'm trying this code with a webapplication, but getting errror. Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005. But the sample code provided by you is working fine on same machine. So is it related with rights/previlages, or it is not at all possible with webapps? Please help Thanks.. Manish
Reply | Email | Modify 
Changing Background image and colour based on user input by bindiya On August 31, 2011
How to get the background colour of an email sent through outlook using C# changed based on colour selected by the user on btn_click from the colordialogbox and background image of emails changed based on image selected by user from opendialogbox.Pasting my code below:- private void btnSend_Click(object sender, EventArgs e) { try { Outlook.MailItem omsg = (Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem); omsg.To = txtTo.Text; omsg.Subject = txtSub.Text; omsg.Body = txtcontent.Text; omsg.Send(); omsg = null; app = null; txtcontent.Text = ""; txtTo.Text = ""; txtSub.Text = ""; } catch (Exception ex) { } } private void BackBlue_Click(object sender, EventArgs e) { Outlook.MailItem mitem3 =(Outlook.MailItem)this.app.CreateItem(Outlook.OlItemType.olMailItem); Form form1 = new Form(); ColorDialog cd = new ColorDialog(); cd.ShowDialog(); form1 = cd.Color; }
Reply | Email | Modify 
Changing Background image and colour based on user input by bindiya On August 31, 2011
How to get the background colour of an email sent through outlook using C# changed based on colour selected by the user on btn_click from the colordialogbox and background image of emails changed based on image selected by user from opendialogbox.Pasting my code below:- private void btnSend_Click(object sender, EventArgs e) { try { Outlook.MailItem omsg = (Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem); omsg.To = txtTo.Text; omsg.Subject = txtSub.Text; omsg.Body = txtcontent.Text; omsg.Send(); omsg = null; app = null; txtcontent.Text = ""; txtTo.Text = ""; txtSub.Text = ""; } catch (Exception ex) { } } private void BackBlue_Click(object sender, EventArgs e) { Outlook.MailItem mitem3 =(Outlook.MailItem)this.app.CreateItem(Outlook.OlItemType.olMailItem); Form form1 = new Form(); ColorDialog cd = new ColorDialog(); cd.ShowDialog(); form1 = cd.Color; }
Reply | Email | Modify 
I am not able to attach files using below code.Please suggest.... by bindiya On August 31, 2011
private void btnattach_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); if (openFileDialog1.FileName.Length > 0) { //Outlook.MailItem mitem2 = this.app.CreateItem(Outlook.OlItemType.olMailItem); Outlook.MailItem mitem1 = (Outlook.MailItem)this.app.CreateItem(Outlook.OlItemType.olMailItem); string sSource = (string)openFileDialog1.FileName; //String sDisplayName = "MyFirstAttachment"; //double iPosition = (double)mitem1.Body.Length + 1; //int iAttachType = (int)Outlook.OlAttachmentType.olByValue; ////Outlook.Attachment oAttach = mitem1.Attachments.Add(sSource, iAttachType, iPosition, sDisplayName); Outlook.Attachment attach = mitem1.Attachments.Add(sSource, Outlook.OlAttachmentType.olByValue, 1, "1ST Attachment"); }
Reply | Email | Modify 
How to set sender of the Outlook email? by Matt On February 3, 2012
Is there any way we can set sender of the Outlook email message? Something like "oMailItem.From = abc@abc.com"? Or How to set a sender of Outlook email in C#?
Reply | Email | Modify 
6 Months Free & No Setup Fees ASP.NET Hosting!
 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.