You may ship emails with the usage of the System.Net.Mail namespace, which gives classes for building and sending emails. The number one instructions you'll paint with are SmtpClient and MailMessage. Below is a step-with the aid of-step manual on a way to ship emails in C#:
Step 1: Add Required Namespaces
Make sure to include the vital namespaces on the pinnacle of your code report:
using System;
using System.Net;
using System.Net.Mail;
Step 2: Create and Configure the SmtpClient
The SmtpClient elegance is used to ship the e-mail through an SMTP server. You want to configure it with the SMTP server's deal and credentials.
Step 3: Create the MailMessage
The MailMessage magnificence represents the email you want to ship. It consists of residences like the sender, recipient, issue, and body.
Step 4: Send the Email
Use the Send method of SmtpClient to send the MailMessage.
Example Code
Here is an entire example that demonstrates how to send an email:
using System;
using System.Net;
using System.Net.Mail;
namespace ConsoleApplication1
{
public class SendEmail
{
// Private constructor to prevent instantiation
private SendEmail()
{
// TODO: Complete member initialization
}
// Method to set up the SMTP client for sending emails
private SmtpClient SetUpEmailEngine()
{
// Set up the SmtpClient with the server details
SmtpClient smtpClient = new SmtpClient("smtp.example.com")
{
Port = 587, // SMTP port number
Credentials = new NetworkCredential("your_email@example.com", "your_password"), // SMTP server credentials
EnableSsl = true // Enable SSL for secure connection
};
return smtpClient;
}
// Factory method to create an instance of SendEmail
public static SendEmail Instance()
{
return new SendEmail();
}
// Static method to send an email
public static bool Send(string RecepientEmail, string Subject, string MailBody)
{
try
{
// Create the MailMessage object with the necessary details
MailMessage mailMessage = new MailMessage
{
From = new MailAddress("your_email@example.com"), // Sender email address
Subject = Subject, // Email subject
Body = MailBody, // Email body
IsBodyHtml = true // Set to true if the body contains HTML
};
// Add recipient to the mail message
mailMessage.To.Add(RecepientEmail);
// You can add multiple recipients by repeating the above line with different email addresses
// Send the email using the SMTP client
Instance().SetUpEmailEngine().Send(mailMessage);
Console.WriteLine("Email sent successfully.");
return true;
}
catch (Exception ex)
{
// Handle any errors that occur when sending the email
Console.WriteLine("Error sending email: " + ex.Message);
}
return false;
}
}
// Main program class
public class Program
{
public static void Main(string[] args)
{
// Send a test email
SendEmail.Send("ravi.v@mindstick.com", "This is a test email", "I am just testing the email functionality");
Console.ReadLine(); // Wait for user input to keep the console open
}
}
}
Explanation
SmtpClient Configuration:
- Replace "smtp.Example.Com" together with your SMTP server's cope with.
- Use the perfect port-wide variety (e.g., 587 for TLS/STARTTLS, 465 for SSL, 25 for non-steady).
- Provide the sender's e-mail and password in the NetworkCredential constructor.
MailMessage Setup:
- Set the From address to the sender's e-mail.
- Set the Subject and Body of the e-mail.
- Add recipients to the usage of the To. Add method. You can add a couple of recipients by way of calling this method more than one instance.
- Set IsBodyHtml to actual if the body of the e-mail contains HTML; in any other case, set it to fake.
Sending the Email:
- Call the Send approach of SmtpClient to ship the email.
- Handle any exceptions to capture errors all through the sending procedure.
Security Note
Avoid hardcoding your electronic mail credentials for your source code. Instead, don't forget to use steady garage strategies inclusive of environment variables, encrypted configuration files, or steady secrets management services.
Additional Features
- Attachments: You can add attachments to the MailMessage for the usage of the Attachments belongings.
- CC/BCC: You can upload CC and BCC recipients using the CC and BCC properties of the MailMessage.
Example with Attachment and CC
using System;
using System.Net;
using System.Net.Mail;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
/*
Provides functionality to send emails.
*/
public class SendEmail
{
/* Private constructor to prevent instantiation */
private SendEmail() { }
/* Sets up the SMTP client for sending emails */
private SmtpClient SetUpEmailEngine()
{
// Set up the SmtpClient with the server details
SmtpClient smtpClient = new SmtpClient("smtp.example.com")
{
Port = 587, // SMTP port number
Credentials = new NetworkCredential("your_email@example.com", "your_password"), // SMTP server credentials
EnableSsl = true // Enable SSL for secure connection
};
return smtpClient;
}
/* Sets up the email message with sender, subject, and body */
private MailMessage SetUpEmailMessage(string SenderEmail, string Subject, string MailBody)
{
// Create the MailMessage object with the necessary details
MailMessage mailMessage = new MailMessage
{
From = new MailAddress(SenderEmail), // Sender email address
Subject = Subject, // Email subject
Body = MailBody, // Email body
IsBodyHtml = true // Set to true if the body contains HTML
};
return mailMessage;
}
/* Factory method to create an instance of SendEmail */
public static SendEmail Instance()
{
return new SendEmail();
}
/* Sends an email */
public static bool Send(string SenderEmail, string RecipientEmail, string Subject, string MailBody)
{
try
{
var instance = Instance();
var mailMessage = instance.SetUpEmailMessage(SenderEmail, Subject, MailBody);
// Add recipient to the mail message
mailMessage.To.Add(RecipientEmail);
// You can add multiple recipients by repeating the above line with different email addresses
// Send the email using the SMTP client
instance.SetUpEmailEngine().Send(mailMessage);
Console.WriteLine("Email sent successfully.");
return true;
}
catch (Exception ex)
{
// Handle any errors that occur when sending the email
Console.WriteLine("Error sending email: " + ex.Message);
}
return false;
}
/*
Sends an email with CC and attachment
*/
public static bool SendWithAttachment(string SenderEmail, string[] RecipientEmails, string Subject, string MailBody, string[] CCEmails = null, string[] BCCEmails = null, string[] AttachmentPaths = null)
{
try
{
var instance = Instance();
var mailMessage = instance.SetUpEmailMessage(SenderEmail, Subject, MailBody);
// Add recipients to the mail message
foreach (string Email in RecipientEmails.Where(x => EmailVerification.IsValidEmail(x)))
{
mailMessage.To.Add(Email);
}
// Add CC recipients
if (CCEmails != null)
{
foreach (string Email in CCEmails.Where(x => EmailVerification.IsValidEmail(x)))
{
mailMessage.CC.Add(Email);
}
}
// Add BCC recipients
if (BCCEmails != null)
{
foreach (string Email in BCCEmails.Where(x => EmailVerification.IsValidEmail(x)))
{
mailMessage.Bcc.Add(Email);
}
}
// Add attachments if (AttachmentPaths != null) { foreach (string Path in AttachmentPaths) { mailMessage.Attachments.Add(new Attachment(Path)); } } // Send the email using the SMTP client instance.SetUpEmailEngine().Send(mailMessage); Console.WriteLine("Email sent successfully."); return true; } catch (Exception ex) { // Handle any errors that occur when sending the email Console.WriteLine("Error sending email: " + ex.Message); } return false; } } /* Provides functionality to verify email addresses. */ public class EmailVerification { /* Validates an email address. */ public static bool IsValidEmail(string email) { // Regular expression pattern for validating email addresses string pattern = @"^[\w.+-]+@[\w-]+\.[\w.-]+$"; // Create a Regex object Regex regex = new Regex(pattern, RegexOptions.Multiline); // Use the IsMatch method to validate the email address return regex.IsMatch(email); } } // Main program class public class Program { public static void Main(string[] args) { // Send a test email //SendEmail.Send("mindstick_admin@mindstick.com", "ravi.v@mindstick.com", "This is a test email", "I am just testing the email functionality"); SendEmail.SendWithAttachment("mindstick_admin@mindstick.com", new string[] { "ravi.v@mindstick.com" }, "This is test", "This is test"); Console.ReadLine(); // Wait for user input to keep the console open } } }
Explanation
SendEmail Class:
- SetUpEmailEngine Method: This private method sets up the
SmtpClient
with the server details. - Send Method: Static method to send an email. It creates a
MailMessage
object with necessary details and sends the email using the SMTP client. It catches and handles any exceptions that occur during the process. - SendWithAttachment Method: Static method to send an email with CC, BCC, and attachments. It validates email addresses using the
EmailVerification
class. It handles multiple recipients, CC, BCC, and attachments similar to the Send method.
EmailVerification Class:
- IsValidEmail Method: Validates email addresses using a regular expression pattern.
Program Class:
- Main Method: Entry point of the application. It sends a test email and waits for user input to keep the console open.
Leave Comment