在邮件正文VB.NET中发送包含图像的HTML电子邮件

时间:2017-11-22 03:55:23

标签: html vb.net image email easendmail

我正在使用VB.NET中的Mail App。邮件应用程序分两步发送邮件:

1.将电子邮件正文(rtf)转换为HTML

2.然后将转换后的HTML作为电子邮件正文发送

对于这些,我使用 EASendMail(发送电子邮件),Itenso RTF2HTML转换器(将RTF转换为HTML)。现在我的电子邮件正文基本上是一个RichTextBox(bodytxt.text)。使用的代码是:

  Imports Itenso.Rtf.Converter.Html
  Imports EASendMail
  Imports Itenso.Rtf.Support
  Imports Itenso.Rtf

   Dim rr As String = bodytxt.Rtf.Replace("\0", "")
   Dim rtfDocument As IRtfDocument = RtfInterpreterTool.BuildDoc(rr)
   Dim htmlConverter As New RtfHtmlConverter(rtfDocument)
   Dim html1 As String = htmlConverter.Convert()

    Dim oMail As New SmtpMail("TryIt")
            Dim oSmtp As New EASendMail.SmtpClient()
            oMail.From = fromtxt.Text
            oMail.To = New AddressCollection(totxt.Text)
            oMail.Subject = subjecttxt.Text
            oMail.HtmlBody = html1
            Dim oServer As New SmtpServer(MailConfig.host.Text)
            oServer.Port = MailConfig.port.Text
            oServer.ConnectType = SmtpConnectType.ConnectSSLAuto
            oServer.User = fromtxt.Text
            oServer.Password = MailConfig.password.Text
            Dim r As Integer
            If ListBox1.Items.Count <= 0 Then
            Else
                oMail.AddAttachment(ListBox1.Items(r))
            End If
            oSmtp.LogFileName = Application.StartupPath & "\maillog.OFPTX"

            oSmtp.SendMail(oServer, oMail)

现在这段代码工作正常,并将电子邮件发送为HTML维护所有文本格式。问题是,假设我在富文本框中添加了一个图像,然后发送了图像,但无法从我的邮件客户端的收件箱中打开/查看该图像。在Gmail中,它显示为损坏的图像和&#34;在新标签页中打开图片&#34;显示&#34;我们无法显示此图像&#34; ...

1.我做错了什么?如何将图像作为附件而不是电子邮件正文的一部分发送?

2.我的代码可以改进吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我多次处理过这个问题。当您将图像拖到富文本框中时,它可能只是在那里生活了#34;在记忆中。

富文本框中的标记是什么样的?通常,有两种方法可以解决这个问题,因为Web应用程序涉及可以拖动图像的富文本框(或任何应用程序):

  1. 将图像拖放到richtextbox中时,将其保存到服务器或文件服务器 - 并提供链接。现在,您可以在电子邮件的HTML中添加标记 Image is dropped in RTB -> link served up 在我的vb.net项目中,它是一个asp web项目,所以我使用的是Web服务,但RichTextBox.Rtf属性可能有效 - 看看RTF文件中是否包含图像:{{ 3}}
  2. 将图片转换为数据URI:https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.rtf(v=vs.110).aspx