How to Send and Receive email in Microsoft Outlook using C#
By FoxLearn 8/25/2024 3:20:25 AM 13.81K
How to Send and Receive email in C# using Microsoft Outlook
Click New Project, then select Visual C# on the left, then Windows and then select Windows Forms Application. Name your project "OutlookMail" and then click OK
Drag and drop the Label, TextBox, DataGridView, WebBrower, Button controls from the Visual Studio Toolbox onto your form designer, then you can layout your form as shown below.
Ensure that Microsoft Outlook is installed on your system.
Add a reference to the Microsoft Outlook XX.0 Object Library
in your C# project. You can do this through:
- Right-click on your project in Solution Explorer.
- Select Add > Reference.
- Go to the COM tab.
- Search for Microsoft Outlook XX.0 Object Library and add it.
Here's a simple example of how to send an email using the Microsoft.Office.Interop.Outlook
namespace.
using System; using System.Data; using System.Windows.Forms; using Outlook = Microsoft.Office.Interop.Outlook; namespace OutlookMail { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSend_Click(object sender, EventArgs e) { try { //Using COM to send email // Create a new instance of Outlook application Outlook._Application _app = new Outlook.Application(); // Create a new mail item Outlook.MailItem mail = (Outlook.MailItem)_app.CreateItem(Outlook.OlItemType.olMailItem); // Set the properties of the mail item mail.To = txtTo.Text; mail.Subject = txtSubject.Text; mail.Body = txtMessage.Text; mail.Importance = Outlook.OlImportance.olImportanceNormal; // Send the email ((Outlook._MailItem)mail).Send(); MessageBox.Show("Your message has been successfully sent.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
Receiving emails is more complex, as it involves accessing the Outlook inbox and processing the items. Here’s a basic example of how to access and read emails from the inbox.
DataTable dt; private void btnReceive_Click(object sender, EventArgs e) { try { // Create a new instance of Outlook application Outlook._Application _app = new Outlook.Application(); // Get the MAPI namespace Outlook._NameSpace _ns = _app.GetNamespace("MAPI"); // Get the inbox folder Outlook.MAPIFolder inbox = _ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); _ns.SendAndReceive(true); dt = new DataTable("Inbox"); dt.Columns.Add("Subject", typeof(string)); dt.Columns.Add("Sender", typeof(string)); dt.Columns.Add("Body", typeof(string)); dt.Columns.Add("Date", typeof(string)); dataGrid.DataSource = dt; // Get the items in the inbox, Iterate through the items foreach (Outlook.MailItem item in inbox.Items) dt.Rows.Add(new object[] { item.Subject, item.SenderName, item.HTMLBody, item.SentOn.ToLongDateString() + " " + item.SentOn.ToLongTimeString() }); } catch (Exception ex) { MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGrid_CellClick(object sender, DataGridViewCellEventArgs e) { //Display email as html if (e.RowIndex < dt.Rows.Count && e.RowIndex >= 0) webBrowser.DocumentText = dt.Rows[e.RowIndex]["Body"].ToString(); }
VIDEO TUTORIAL
- How to update UI from another thread in C#
- How to get CheckedListBox selected values in C#
- How to use Advanced Filter DataGridView in C#
- How to create a Notification Popup in C#
- How to Use Form Load and Button click Event in C#
- How to Link Chart /Graph with Database in C#
- How to Check SQL Server Connection in C#
- How to Generate Serial Key in C#