首页 > 解决方案 > 徽标图像未在 vb.net 中通过邮件发送

问题描述

我也想通过邮件发送图像,但不是附件

以下是我的代码

Sub SenMail()
    Dim mail2 As MailMessage = New MailMessage()
    mail2.From = New MailAddress("erpnoreplyy@gmail.com")
    mail2.To.Add("shahbaz1604a@aptechgdn.net")
    mail2.Subject = "test email"
    'text/html
    'Dim plainview As AlternateView = AlternateView.CreateAlternateViewFromString("this is my text", Nothing, "plain/html")
    'Dim htmlview As AlternateView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", Nothing, "text/html")
    Dim logo As LinkedResource = New LinkedResource("f:\\logindreuss.gif", MediaTypeNames.Image.Gif)
    logo.ContentId = "MyImage"
    'logo.ContentId = "logo"
    Dim body As String = "" &
        "<img src=cid:MyImage  width='100px' height='100px' alt='logostring'>"
    '"<img src='" & htmlview.ToString() & "' alt='htmlstring'>" &
    '"<img src='" & plainview.ToString() & "'  alt='plainstring'>"
    mail2.IsBodyHtml = True
    mail2.Body = body
    'htmlview.LinkedResources.Add(logo)
    'mail2.AlternateViews.Add(plainview)
    'mail2.AlternateViews.Add(htmlview)
    'Dim smtp As SmtpClient = New SmtpClient("465.0.0")
    Dim av As AlternateView = AlternateView.CreateAlternateViewFromString(body, Nothing, MediaTypeNames.Text.Html)
    av.LinkedResources.Add(logo)
    Dim smtp As SmtpClient = New SmtpClient()
    smtp.Port = 587
    smtp.Host = "smtp.gmail.com"
    smtp.Credentials = New System.Net.NetworkCredential("erpnoreplyy@gmail.com", "naeem1234")
    smtp.EnableSsl = True
    smtp.Send(mail2)
End Sub

标签: asp.netvb.net

解决方案


在这里,您可以将图像转换为字节并将其作为 html 传递给邮件正文,如果图像仍未显示,那么您必须在线解码 Base64String 并获得简单的 URI 并放入正文的 img 标签

 Dim b_logo = File.ReadAllBytes("C:\Users\yogesh\Pictures\sclhneider.png")

            Dim body As String = "<img src='data:image/png;base64," & Convert.ToBase64String(b_logo) & "' />"

推荐阅读