如何从数据库中插入mailmessage图像

时间:2011-11-09 12:00:21

标签: .net vb.net sendmail

我有一个存储在sql server中的图像。我想检索图像并将其放在MailMessage对象中,而不是作为附件文件,而是作为html正文的一部分。

我发现许多样本使用本地图像文件,但我没有发现使用数据库中的图像。

任何人都知道如何在vb.net中做到这一点?

提前谢谢!

哈维尔

2 个答案:

答案 0 :(得分:0)

您必须将数据库中的图像添加为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);

答案 1 :(得分:0)

您必须将图片包含在带有图片标签的html体中:<img src="cid:myuniqueid" alt="img" />

通过添加LinkedResource,您可以将图像包含在消息中。但是你需要在html正文和图像之间创建一个链接。这是来自html机构的“cid:myuniqueid”。 cid的值必须等于LinkedResource对象的ContentID属性的值。

以下是一个例子:

     '** 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)