我有一个存储在sql server中的图像。我想检索图像并将其放在MailMessage对象中,而不是作为附件文件,而是作为html正文的一部分。
我发现许多样本使用本地图像文件,但我没有发现使用数据库中的图像。
任何人都知道如何在vb.net中做到这一点?
提前谢谢!
哈维尔
答案 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)