Jobi Joy
Jobi Joy

Reputation: 50038

Embbed photos to an Email

I am writing a Windows application which uses SMTP service to send email. I want to embed few dynamically created images to the Email content. How can I do this in .NET?. My format of email is HTML. I don't want to host my image to a photo hosting service. I don't want to send it as attachment.

Upvotes: 1

Views: 227

Answers (2)

David
David

Reputation: 15360

On your MailMessage object you need to create an alternative HTML view. Then you add LinkedResources to your alternative HTML view. The LinkedResource takes in a location of a file or a Stream object. Give the LinkedResource an ID which will match to whats in your HTML file.

MailMessage msg = CreateYourMessage();
msg.IsBodyHtml = true;

string html = GetHtmlFromFileOrText();

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, "text/html");

LinkedResource img = new LinkedResource("location_of_image_or_stream_object");
img.ContentId = "Header_Image";
htmlView.LinkedResources.Add(img);

message.AlternateViews.Add(htmlView);

Your html file or text should have something like this

< img src="cid:Header_Image" alt="" title="" />

notice the cid should match the ContentID of your LinkedResource.

Upvotes: 2

Daniel A. White
Daniel A. White

Reputation: 190976

Here is some VB.NET code which should be trivial to change to C#. It will have to be attached. Thats the way HTML email works.

http://www.example-code.com/vbdotnet/HtmlWithImage.asp

Upvotes: 0

Related Questions