1

我正在尝试在电子邮件正文中显示嵌入图像。已发送,但没有图像。

下面是代码:

Dim mail As New MailMessage()

mail.[To].Add("siu07aj@reading.ac.uk")

mail.From = New MailAddress("atiqisthebest@hotmail.com")

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 吗?

谢谢

4

1 回答 1

0

您可以尝试内联图像,通过使用以下方法将其转换为 base64 字符串:

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是 Image 类的实例):

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

这样你就可以绕过将图像添加为资源。这在几个地方对我有用,尽管我必须承认我没有在 HMLT 电子邮件上尝试过。

萨沙

于 2015-11-24T10:13:23.117 回答