2011-02-10 120 views
1

我试图在电子邮件正文中显示一个嵌入图像。这是发送,但没有图像。使用vb.net在emaill中不显示嵌入图像

下面是代码:

Dim mail As New MailMessage() 

mail.[To].Add("[email protected]") 

mail.From = New MailAddress("[email protected]") 

mail.Subject = "Test Email" 


Dim Body As String = "<b>Welcome to codedigest.com!!</b><br><BR>Online resource for .net articles.<BR><img alt="""" hspace=0 src=""cid:imageId"" align=baseline border=0 >" 

Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(Body, Nothing, "text/html") 

Dim imagelink As New LinkedResource(Server.MapPath(".") & "\uploads\CIMG1443.JPG", "image/jpg") 

imagelink.ContentId = "imageId" 

imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64 

htmlView.LinkedResources.Add(imagelink) 

mail.AlternateViews.Add(htmlView) 

Dim smtp As New SmtpClient() 

smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis 
smtp.Host = ConfigurationManager.AppSettings("SMTP") 
smtp.Port = 587 
'smtp.EnableSsl = True 

smtp.Credentials = New System.Net.NetworkCredential(ConfigurationManager.AppSettings("FROMEMAIL"), ConfigurationManager.AppSettings("FROMPWD")) 

smtp.Send(mail) 

在电子邮件的正文中只有以下是显示:

欢迎CodeDigest.Com!

任何想法如何让CIMG1443.JPG显示?

感谢

+0

可惜,我也需要一个答案。 :) – 2011-12-07 13:02:31

回答

0

你可以尝试内联图像,通过与下面的方法转换为基于64位字符串:

Public Function ImageToBase64(image As Image, format As System.Drawing.Imaging.ImageFormat) As String 
    If image Is Nothing Then Return "" 

    Using ms As New MemoryStream() 
     ' Convert Image to byte[] 
     image.Save(ms, format) 
     Dim imageBytes As Byte() = ms.ToArray() 

     ' Convert byte[] to Base64 String 
     Dim base64String As String = Convert.ToBase64String(imageBytes) 
     Return base64String 
    End Using 
End Function 

然后你使用这样的图像添加到您的HTML(其中yourImage是图像类的一个实例):

dim imageString = "<img src=""data:image/png;base64," + ImageToBase64(yourImage, ImageFormat.Png) + "="" />" 

这样,你会得到周围添加图像resou RCE。尽管我必须承认我没有尝试过使用hmlt邮件,但这在几个地方都有效。

Sascha