Click here to Skip to main content
15,885,782 members
Articles / Web Development / ASP.NET

Embed image in Email - ASP.NET , C#

Rate me:
Please Sign up or sign in to vote.
3.05/5 (23 votes)
13 Dec 2007CPOL1 min read 275.5K   45   39
Code to embed logo and other images while sending email

Introduction

This is a simple article which tells you how you can embed images in emails. This can be very useful when you want to send emails from your website.A common scenario would be when a new user registers with your site and you want to send a welcome email with your site's logo on top.

I searched the net when I faced this issue. I am grateful to many authors from where I could make a start. I have used their code while writing this. Due credit goes to them all. The intention is to make the code available for the others too. To use this all you have to so is copy the code and paste it in any button click event.

This may only work with ASP.NET 2.0 & C#. I have tested it too. It will not run in ASP.NET 1.1.

Namespaces Used

C#
using System.Net.Mail;
using System.Net.Mime;

Code

// send mail to the new user who has registered.
  protected void yourButton_Click(object sender, EventArgs e)
   {

           string strMailContent = "Welcome new user";
           string fromAddress = "yourname@yoursite.com";
           string toAddress = "newuser@hisdomain.com";
           string contentId  = "image1";
           string path = Server.MapPath(@"images/Logo.jpg"); // my logo is placed in images folder
           MailMessage mailMessage = new MailMessage( fromAddress, toAddress );
           mailMessage.Bcc.Add("inkrajesh@hotmail.com"); // put your id here
           mailMessage.Subject = "Welcome new User";

           LinkedResource logo = new LinkedResource(path);
           logo.ContentId = "companylogo";
           // done HTML formatting in the next line to display my logo
           AlternateView av1 = AlternateView.CreateAlternateViewFromString("<html><body><img src=cid:companylogo/><br></body></html>" + strMailContent, null, MediaTypeNames.Text.Html);
           av1.LinkedResources.Add(logo);

           mailMessage.AlternateViews.Add(av1);
           mailMessage.IsBodyHtml = true;
           SmtpClient mailSender = new SmtpClient("localhost"); //use this if you are in the development server
                       mailSender.Send(mailMessage);

       }

Note: SmtpClient mailSender = new SmtpClient(ConfigurationManager.AppSettings["MyCustomId"]); // use this in the Production Server. I have specified my email server in the web.config file

Remarks

The image may not be displayed in Outlook Express. It worked well when the mail was viewed in Yahoo. If your site is not a trusted one there is a chance that the image may be blocked. It did not work with Hotmail and Gmail.

There are other ways to show images, but like many authors have pointed out they do not embed the image. They always refer to the parent site. The image won't be displayed when offline or when the location of the image has changed in the parent site

Do please send your comments . I would be happy to hear from you.

Thank you , Happy Coding !

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
India India
A Mechanical Engineer, MBA working in Microsoft Technologies. Currently employed with a software major in Mumbai,India

Comments and Discussions

 
Questionpicture is too big Pin
Member 141678257-Mar-19 1:09
Member 141678257-Mar-19 1:09 
QuestionEmail Tracking Pin
ParkashKaur29-Oct-18 22:21
ParkashKaur29-Oct-18 22:21 
QuestionOutlook Express, Hotmail, Windows Live mail Pin
shivam.mehta22-Nov-16 7:37
shivam.mehta22-Nov-16 7:37 
QuestionOutlook Express, Hotmail, Windows Live mail Pin
shivam.mehta22-Nov-16 7:37
shivam.mehta22-Nov-16 7:37 
SuggestionOutlook Express, Hotmail, Windows Live mail Pin
shivam.mehta22-Nov-16 7:37
shivam.mehta22-Nov-16 7:37 
QuestionOutlook Express, Hotmail, Windows Live mail Pin
shivam.mehta22-Nov-16 7:38
shivam.mehta22-Nov-16 7:38 
QuestionWhat if I am sending an html body that has a link image? Pin
Member 115255631-Apr-16 4:10
Member 115255631-Apr-16 4:10 
GeneralThanks Pin
Member 1024437210-Feb-15 22:22
professionalMember 1024437210-Feb-15 22:22 
QuestionI have been able to embed images in Gmail Pin
electriac3-Jan-13 9:33
electriac3-Jan-13 9:33 
Questionhtml templates in asp.net Pin
Kolli Hari Chowdary8-May-12 21:38
Kolli Hari Chowdary8-May-12 21:38 
QuestionPicture not adding to the body of the mail Pin
Hayden Pinto9-Mar-12 5:51
Hayden Pinto9-Mar-12 5:51 
GeneralMy vote of 2 Pin
Rajesh Duraisamy17-Aug-11 4:38
Rajesh Duraisamy17-Aug-11 4:38 
GeneralChanges for it to work on Gmail and Thunderbird Pin
Member 786410722-Apr-11 1:32
Member 786410722-Apr-11 1:32 
GeneralMy vote of 1 Pin
Ram Shah22-Sep-10 23:50
Ram Shah22-Sep-10 23:50 
QuestionHow to display images in Windows Live Mail [modified] Pin
intellidream23-Aug-10 2:12
intellidream23-Aug-10 2:12 
AnswerRe: How to display images in Windows Live Mail Pin
rurouniRonin3-May-11 9:12
rurouniRonin3-May-11 9:12 
AnswerRe: How to display images in Windows Live Mail [modified] Pin
shivam.mehta22-Nov-16 7:10
shivam.mehta22-Nov-16 7:10 
Generalthanks ! Pin
aicha20089-Sep-09 0:56
aicha20089-Sep-09 0:56 
Questionhow to send mail within intranet. Pin
sudhir behera8-Sep-09 18:00
sudhir behera8-Sep-09 18:00 
GeneralI had trouble getting this to work in Visual Studio 2008 Pin
mbizzile6-Feb-09 10:56
mbizzile6-Feb-09 10:56 
Until I used this for the logo line:

LinkedResource logo = new LinkedResource(path, MediaTypeNames.Image.Jpeg);

Then it displayed fine in Outlook 2007.

Thanks a lot for the code.

Great Work.
QuestionImage stream attachments? Pin
PSU Mike7-Aug-08 5:00
PSU Mike7-Aug-08 5:00 
Generaldo not work with outlook 2007 Pin
mrodrig@renacimiento.com24-Jul-08 1:06
mrodrig@renacimiento.com24-Jul-08 1:06 
GeneralRe: do not work with outlook 2007 Pin
KenL_MCSE31-Oct-08 7:24
KenL_MCSE31-Oct-08 7:24 
GeneralRe: do not work with outlook 2007 Pin
Member 435949310-Dec-08 20:17
Member 435949310-Dec-08 20:17 
GeneralRe: do not work with outlook 2007 Pin
MaciusA28-Apr-10 22:17
MaciusA28-Apr-10 22:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.