Html Email with Embedded Image

Html Email with Embedded Image

In this small article, I am explaining how to send an HTML email with an embedded image.  The steps in this are the following:
  1. Create the Html Body with <img> tag
  2. Create the Images
  3. Attach the Image resource using cid
  4. Send Email
The steps are explained below:

1. Create the Html Body

The following could be our HTML email body.
  1. <h1>Test Body</h1><img src=\"cid:id1\"></img>  
In the above code, we can see the img tag.  We can have multiple image tag on the image will be placed in a particular location.
Another important point to note is the cid.  It represents the content id of the resource.  The resources added can be assigned a content id.
The HTML email code will be as shown below:
  1. MailMessage message = new MailMessage(AdminEmail, RecipientEmail);  
  2. message.IsBodyHtml = true;  
  3. message.Subject = "Test Subject";  

2. Create the Images

For the demo purpose, I have created one image which will be included in the HTML email.

3. Attach the Image resource using cid

Now that we need to add the image in the email using cid.  The following code does this.
  1. AlternateView view = AlternateView.CreateAlternateViewFromString(Message, null, MediaTypeNames.Text.Html);  
  2. LinkedResource resource = new LinkedResource(ImagePath);  
  3. resource.ContentId = "id1";  
From the above code, we can see that the id1 is the content Id.  A new class named AlternateView is used to specify the image.  The resource is added to the email message using the following line of code:
  1. message.AlternateViews.Add(view);  

4. Send Email

Now we can use the Send() method to send the email.  The received email will be looking like the following:
Hope you enjoyed it. The associated code is attached to the article. You can replace the Gmail credentials with your own and test it.