Я думаю, что вы можете использовать классы в пространстве имен System.Net.Mail, чтобы сделать эту работу.Это требует довольно большой работы.Я оставлю это как упражнение читателя.
Согласно RFC2111 , электронное письмо в формате HTML со встроенным изображением просто хранит тело письма в формате HTML и вложение изображения в двух разных 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 - ваш идентификатор контента.Проверьте RFC2111 для более подробной информации о Content ID.Из того, что я вижу в пространстве имен System.Net.Mail, он позволяет вам создавать MailMessage со свойством IsBodyHtml, установленным в true.Затем, следующее, что вам нужно сделать, это добавить Attachment к этому MailMessage.Приложение - это, конечно, ваше встроенное изображение.Затем вам нужно не забыть установить ContentID вложения.Итак, просто чтобы убедиться, что в вашем электронном письме HTML содержится ссылка на правильный ContentID, все должно работать.
Опять же, я сам не проверял это, но я быстро проверил некоторые из моих писем со встроенным изображением вЭто.Я видел письмо с cid: xxxx в качестве источника изображения, и мой клиент Outlook действительно может его открыть.