How to Send and Receive email in Microsoft Outlook using C#
By FoxLearn 8/25/2024 3:20:25 AM 13.62K
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 Print Text in a Windows Form Application Using C#
- How to fill ComboBox and DataGridView automatically in C#
- How to Read text file and Sort list in C#
- How to pass ListView row data into another Form in C#
- How to read and write to text file in C#
- How to make a Countdown Timer in C#
- How to Display selected Row from DataGridView to TextBox in C#
- How to Get all Forms and Open Form with Form Name in C#