Skip to main content

Creating dynamic email templates using C# and Office Outlook

It is quite common for many applications to send automated email notifications. Couple of months ago, I have worked on improving our old email template format to make it more user friendly.

In this tutorial I will walk you though regarding how I took advantage of Microsoft Outlook to quickly generate custom email template and later using the html template for building an automated custom email application using C#.


  • Creating Templates: Using the rich text editor support  in Outlook create a nicely formatted email. Use placeholder text for the values you like to change dynamically based on your task completion status.

    To keep this tutorial simple, I have created a  simple table with placeholder text inside the third bracket [place holder text]. However, you can use anything supported by outlook editor.
Figure: Email Template

  • Getting HTML code: Send the created email to your own address. After that, open the sent email and right click to view source. It will display the HTML source of the email body with all the formatting you have made. Copy the HTML source to a separate file and save it as EmailTemplate.html

HTML Source of the email
C# Application
Create a C# Console application and add the  EmailTemplate.html file  to your project
  • Now in the  C# console application you can read all text from the HTML file and replace the placeholder content with the value of your corresponding variable.
    • For example, in the following code sample I am replacing the placeholder text in the HTML with my own value.
      private string GenerateEmailBody(JobLoadParam jlp)  
           string emailBody = string.Empty;  
             string strHTML = File.ReadAllText("EmailTemplate.html");  
             strHTML = strHTML                 
                     .Replace("[SourceFileName]", jlp.SourceFileName)  
                     .Replace("[SourceFileNetworkPath]", jlp.SourceFileNetworkPath)  
                     .Replace("[ExceptionFileName]", jlp.ExceptionFileName)  
                     .Replace("[ExceptionNetworkPath]", jlp.ExceptionFileNetworkPath)  
                     .Replace("[TrackingReferenceCode]", jlp.TrackingReferenceCode);  
             emailBody = strHTML;  
           catch (Exception ex)  
             System.Diagnostics.EventLog.WriteEntry(ex.Source, ex.Message, System.Diagnostics.EventLogEntryType.Error);  
           return emailBody;  

  • After that, you can set the updated html text from above as Body of the MailMessage and can send the email using SMTP client. Make sure you have the IsBodyHtml property of the MailMessage object set to true.

 MailAddress to = new MailAddress("email@domain");      
 MailAddress from = new MailAddress("email@domain");  
 MailMessage mail = new MailMessage(from, to);      
 mail.Subject = "Test email";  
 mail.IsBodyHtml = true;  
 mail.Body = GenerateEmailBody(jlp);  
SmtpClient smtp = new SmtpClient();  
smtp.Host = "your host address";  
smtp.Port = "port";  

Cheers! Your user will be very happy.


Hello friends, its wonderful paragraph on the topic of teachingand completely explained, keep it up all the time. facebook login

Popular posts from this blog

Trip to Drumheller

Book Review - The Phoenix Project

Here at Skybox Labs, we do regular lunch and learn session where a fellow colleague present on topics ranging from clean code, continuous integration, game development, machine learning to almost any areas where there are reasonable interests.

One of the very recent lunch and learn series that I have attended was focusing on DevOps which got me interested to learn more about the topic. I was looking for recommended books and the lead presenter highly recommended that I start with 'The Phoenix Project' by Gene Kim

Being inspired by the stellar reviews in Amazon, I have decided to get a copy and read it over the weekend.
A fantastic book that contains a wealth of information and delivers it in an intelligent and interesting way; a story. The book successfully captures the events and struggles of most people who work in IT Operations and gives a very good explanation on why these problems exist, and how you can solve them. It portrays a very effective way of thinking in applying …