Как вставить в почтовое сообщение изображение из базы данных - PullRequest
1 голос
/ 09 ноября 2011

У меня есть изображение, хранящееся на сервере SQL.Я хочу получить изображение и поместить его в объект MailMessage, не как файл вложения, а как часть тела html.

Я нашел много примеров с использованием локального файла изображения, но я не нашел ни одного с использованием изображения из базы данных.

Кто-нибудь знает, как я могу сделать это в vb.net?

Спасибо заранее!

Хавьер

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

Вы должны включить изображение в htmlbody с тегом image: <img src="cid:myuniqueid" alt="img" />

Добавив LinkedResource, вы можете включить изображение в сообщение.Но вам нужно создать ссылку между html body и изображением.это "cid: myuniqueid" из HTML-тела.Значение cid должно быть равно значению свойства ContentID объекта LinkedResource.

Вот пример:

     '** Create MailMessage Object
     Dim message As New MailMessage()

     '** Create HTML view
     Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(htmlbody, System.Text.Encoding.Default, MediaTypeNames.Text.Html)

     '** Create resource for the image
     Dim lr As New LinkedResource(objStream)

     '** Set the contentid for the image resource
     lr.ContentId = "myuniqueid"

     '** Link image resource and htmlview together
     htmlView.LinkedResources.Add(lr)

     '** Add view to MailMessage Object
     message.AlternateViews.Add(htmlView)
0 голосов
/ 09 ноября 2011

Вы должны добавить изображение из базы данных как LinkedResource . Когда вы извлекаете изображение как байты из базы данных, вы можете добавить LinkedResource с помощью потока; создавая поток памяти из байтов.

Код на C #, но я думаю, что вы сможете преобразовать это в VB.Net

var view = System.Net.Mail.AlternateView.CreateAlternateViewFromString(text, null, "text/html");
var resource = new System.Net.Mail.LinkedResource(new MemoryStream(bytes), mime);
resource.ContentId = image.Name;
view.LinkedResources.Add(resource);
_message.AlternateViews.Add(view);
...