【发布时间】:2018-05-05 17:00:34
【问题描述】:
我正在 VB.NET 中开发邮件应用程序。邮件应用分两步发送邮件:
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 中,它显示为损坏的图片和“在新选项卡中打开图片” " show "我们无法显示此图像"...
1.我做错了什么?如何将图像不作为附件发送,而是作为电子邮件正文的一部分发送?
2.我的代码可以改进吗?
【问题讨论】:
-
文档VB.NET - Send HTML Email with Embedded Images 的哪一部分不起作用?
-
我不能完全按照链接的说明进行操作。因为我之前尝试过,所以 html 代码有点复杂。并且行:` oMail.HtmlBody = "这是一个 嵌入图片。"` 在我的情况下不能使用,因为我使用的是富文本框,而不仅仅是添加文本在代码中。我可以编辑此代码并使用我的文本框而不是预先编写的文本,但问题是我不能使用换行符...
-
请仔细阅读我的帖子,我正在使用另一个api将rtf转换为html然后发送它
-
您需要检查从转换器获得的 HTML,确定如何将
src值更改为“cid:”引用。如果您包含相关的 sn-p,我们可能会提供帮助。还是在 RTF 中没有对图像的引用,因此 HTML 中没有<img>标记? -
您提供的链接显示了如何将图像作为附件发送,而我的图像位于富文本框中
标签: html vb.net image email easendmail