名前空間 System.Net.Mail のクラスを使用して、この仕事を行うことができると思います。これにはかなりの作業が必要です。読者の課題として残しておきます。
RFC2111によると、画像が埋め込まれた HTML メールは、HTML メール本文と画像添付ファイルを 2 つの異なる MIME コンテンツに格納するだけです。
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--
重要な点は、HTML メール本文で、通常の URL パスを使用する代わりに、「cid:xxxxx」を入力することです。ここで、xxxxx はコンテンツ ID です。コンテンツ ID の詳細については、RFC2111を確認してください。System.Net.Mail 名前空間で確認したところ、IsBodyHtml プロパティを true に設定して MailMessage を作成できます。次に、この MailMessage に Attachment を追加する必要があります。添付ファイルはもちろん埋め込み画像です。次に、Attachment の ContentID を忘れずに設定する必要があります。したがって、HTML メールが正しい ContentID を参照していることを確認するだけで、うまくいくはずです。
繰り返しますが、私はそれを自分で確認しませんでしたが、画像が埋め込まれたいくつかのメールを簡単に確認しました. イメージ ソースとして cid:xxxx を含む電子メールを確認しましたが、Outlook クライアントは問題なく開くことができます。