2011-02-10 50 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