Tutorialsteacher

Follow Us

Articles
  • C#
  • C# OOP
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • Inversion of Control (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go lang
  • HTTPS (SSL)
  • Regex
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
Entity Framework Extensions - Boost EF Core 9
  Bulk Insert
  Bulk Delete
  Bulk Update
  Bulk Merge
  • All
  • C#
  • MVC
  • Web API
  • Azure
  • IIS
  • JavaScript
  • Angular
  • Node.js
  • Java
  • Python
  • SQL Server
  • SEO
  • Entrepreneur
  • Productivity

Send emails in C#

Here you will learn how to send emails in C# using the .NET framework’s built-in classes.

We must use protocols to send or receive emails in C# or any other language. Email is a complex communication system that involves a client and a server. Email client sends or receive emails from different devices to email servers that store emails. By using a standardized protocol, email clients and servers can communicate with each other and ensure that emails are delivered correctly.

SMTP (Simple Mail Transfer Protocol) is used to send emails from a client to a server. It's a simple and reliable protocol that's widely supported by email service providers and servers.

IMAP and POP3 protocols are used for retrieving emails from an email server.

Here, we want to send emails so we only need to use the SMTP protocol. The following example sends an email using the SMTP protocol.

Example: Send Email in C#
using System;
using System.Net;
using System.Net.Mail;

class Program
{
    static void Main(string[] args)
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("[email protected]");
        mailMessage.To.Add("[email protected]");
        mailMessage.Subject = "Subject";
        mailMessage.Body = "This is test email";

        SmtpClient smtpClient = new SmtpClient();
        smtpClient.Host = "smtp.mywebsitedomain.com";
        smtpClient.Port = 587;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = new NetworkCredential("username", "password");
        smtpClient.EnableSsl = true;

        try
        {
            smtpClient.Send(mailMessage);
            Console.WriteLine("Email Sent Successfully.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

Let’s understand the above code step by step:

Step 1:

The System.Net.Mail namespace includes all the classes to send or receive emails. The System.Net namespace is used to provide network credentials. So, include them in your program.

using System;
using System.Net;
using System.Net.Mail;

step 2

We need to construct an email message using the MailMessage class object. Provide the email details such as the sender, recipient, subject, and message body using the MailMessage object.

Example: Construct Email Message
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Subject";
mailMessage.Body = "This is test email";

Note that the From email should be your website’s email address from which you want to send emails.

Step 3

Next, we need to configure the SMTP server details using the SmtpClient class.

Example: Configure SMTP Client
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp. mywebsitedomain.com";
smtpClient.Port = 587;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential("username", " password");
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;

step 4

Finally, send the email using the Send() method of the SmtpClient class as smtpClient.Send(mailMessage);.

Thus, you can send emails using SMTP protocol in C#.

Send HTML Email

You can send email as an HTML page where you can use HTML tags in the body.

Example: HTML Body
message.IsBodyHtml = true;
message.Body = "<h1>Great offer</h1>";

Send Email Attachment

You can send an attachment in the email by adding the Attachment object in the MailMessage object, as shown below.

Example: Send Attachment
MailMessage message = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Subject";
mailMessage.Body = "This is test email with attachment.";

// Create a new Attachment object
Attachment attachment = new Attachment(@"C:path	oattachment.pdf");

//// Add the attachment to the MailMessage object
message.Attachments.Add(attachment);

smtpClient.Send(message);

Email Configuration in web.config

You can add the following configuration under the <configuration> section in app.config or web.config. This will allow you to change the sender’s email address and credentials without modifying the code.

Example: SMTP Section in web.config
<system.net>
    <mailSettings>
    <smtp from=" [email protected] ">
    <network host="smtp.mywebsitedomain.com"
                port="587"
                userName="username"
                password="password"
                enableSsl="true" />
		</smtp>
	</mailSettings>
</system.net>

Now, the following send email without hardcoded sender’s email credentials in the code.

Example: Send an Email
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "Subject";
message.Body = "This is test email.";

Attachment attachment = new Attachment(@"D:logo.png");
message.Attachments.Add(attachment);

SmtpClient smtpClient = new SmtpClient();
smtp.Send(message);

Thus, you can send emails using the built-in SMTPClient class in C#. You can also use MailKit library to send and receive emails in .NET.

TUTORIALSTEACHER.COM

TutorialsTeacher.com is your authoritative source for comprehensive technologies tutorials, tailored to guide you through mastering various web and other technologies through a step-by-step approach.

Our content helps you to learn technologies easily and quickly for learners of all levels. By accessing this platform, you acknowledge that you have reviewed and consented to abide by our Terms of Use and Privacy Policy, designed to safeguard your experience and privacy rights.

[email protected]

ABOUT USTERMS OF USEPRIVACY POLICY
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) All Rights Reserved.