I think you can use classes in namespace System.Net.Mail to do this job. This requires quite some work. I will leave it as reader's exercise.
According to RFC2111, a HTML email with embedded image is just storing HTML email body and the image attachment in two different MIME content.
From: foo1@bar.net
To: foo2@bar.net
Subject: A simple example
Mime-Version: 1.0
Content-Type: multipart/related; boundary="boundary-example-1";
type=Text/HTML
--boundary-example 1
Content-Type: Text/HTML; charset=US-ASCII
... text of the HTML document, which might contain a hyperlink
to the other body part, for example through a statement such as:
<IMG SRC="cid:foo4*foo1@bar.net" ALT="IETF logo">
--boundary-example-1
Content-ID: foo4*foo1@bar.net
Content-Type: IMAGE/GIF
Content-Transfer-Encoding: BASE64
R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNvcHlyaWdodCAoQykgMTk5
NSBJRVRGLiBVbmF1dGhvcml6ZWQgZHVwbGljYXRpb24gcHJvaGliaXRlZC4A
etc...
--boundary-example-1--
The key point is that in your HTML email body, instead of using a regular URL path, you put in "cid:xxxxx" where xxxxx is your Content ID. Check RFC2111 for more details about Content ID. From what I see in the System.Net.Mail namespace, it allows you to create a MailMessage with IsBodyHtml property set to true. Then, the next thing you need to do is to add Attachment to this MailMessage. The Attachment is of course your embedded image. Then, you need to remember to set the ContentID of the Attachment. So, just to make sure your HTML email is referencing the correct ContentID, the things should work.
Again, I didn't verify it myself but I did a quick check on some of my emails with embedded image in it. I did see the email with cid:xxxx as the image source and my Outlook client can really open it fine.