发送 VB.NET 后电子邮件不保持格式

Posted

技术标签:

【中文标题】发送 VB.NET 后电子邮件不保持格式【英文标题】:Email doesn't maintain formatting after sending VB.NET 【发布时间】:2017-11-20 18:12:29 【问题描述】:

我正在使用 EASendmail 发送电子邮件。电子邮件正文是一个富文本框。如果我进行格式化,例如一行下一行并发送电子邮件,电子邮件失去了它的格式。例如,如果键入:

Hello,
How are you ?

在富文本框中发送,然后变成:

Hello,How are you

如何维护文本格式?还有一件事,如果我将任何图像添加到我的富文本框中,电子邮件正文不会保留图像..我的意思是,接收者只收到电子邮件正文的文本,而不是图像。如何解决这些问题?

我发送电子邮件的代码是:

 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 = bodytxt.Text
 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
 oSmtp.SendMail(oServer, oMail)

编辑

我什至尝试过:

  oMail.HtmlBody = "<html><body>" + bodytxt.Text + "</body></html>"

但没有结果

【问题讨论】:

您是否尝试过以 HTML 格式发送正文? 富文本与 HTML 不同。你必须以某种方式转换它。我不确定如何嵌入图像 - 从未尝试过。 @DiscipleMichael, oMail.HtmlBody = bodytxt.Text ..它不是将富文本框作为 html 发送吗? 在分配该文本时放置一个调试点,并使用文本可视化器查看它实际分配的内容 对不起,我不明白,你能解释一下吗? 【参考方案1】:

这是一个简单的解决方法。 我所要做的就是将我的 RTF 转换为 HTML,然后发送它..RTF-TO-HTML-CONVERTER

下载工程文件后,必须将引用添加到bin文件夹中的.dll文件中。然后:

  Imports Itenso.Rtf.Converter.Html
  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()

    ' my other codes in-between(read my post)

     oMail.HtmlBody = html1

【讨论】:

以上是关于发送 VB.NET 后电子邮件不保持格式的主要内容,如果未能解决你的问题,请参考以下文章

VB .Net 使用 Gmail 帐户发送电子邮件

在 SMTP 电子邮件 VB.NET 的正文中添加多行

VB.NET邮件群发纯htlm二维码

vb.net 中的电子邮件地址加密

VB.net sendmail smtp 错误

Word邮件合并不能发送HTML格式以及怎么带附件?