【问题标题】:MailMessage from MailBee conversion from HTML to TEXT adds extra spaceMailBee 中的 MailMessage 从 HTML 转换为 TEXT 增加了额外的空间
【发布时间】:2023-04-07 09:00:01
【问题描述】:

我正在使用 MailBee 将 HTML 转换为文本,但它在每一行的开头添加了一个额外的空格,除了第一行。

例如我有这个 HTML

<!DOCTYPE html>
 <html>
    <head>
      <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
    </head>
    <body>
      <div style=\"font-size:13px;font-family:Arial;\"><br></div>
      <div style=\"font-size:13px;font-family:Arial;\">test</div>
      <div style=\"font-size:13px;font-family:Arial;\">test2</div>
      <div style=\"font-size:13px;font-family:Arial;\">test3</div>
      <div style=\"font-size:13px;font-family:Arial;\">test</div>
   </body>
<html>

(html是一行。为了便于阅读,我把它改成了多行。)

当我使用此代码获取文本时

MailMessage message = new MailMessage
 {
    BodyHtmlText = Html
 };
 message.MakePlainBodyFromHtmlBody();
 return message.BodyPlainText;

我得到了这个结果

\r\ntest \r\n test2 \r\n test3 \r\n test \r\n

如您所见,在 test2、test3 和 test 之前,添加了一个额外的空格。 这是一个错误还是我做错了什么? 有人能帮我吗? 谢谢

【问题讨论】:

  • 请不要在您的问题中放置代码图像,否则我们无法复制/粘贴来测试和/或引用。
  • 对不起。不会再发生了。
  • @PoulBak 我删除了图片。
  • MailBee.NET 库只保留内容,而不是格式的所有细节。如果你需要一些特定的纯文本格式,你应该自己创建这个纯文本,而不是从一些 HTML 转换而来。

标签: c# .net mailmessage


【解决方案1】:

我建议您使用简单的正则表达式来删除行首或行尾的空格。 正则表达式:

^[ ]*|[ ]*$

它只匹配行首或行尾的零个或多个空格。

您需要设置“多行”选项。

然后用空字符串替换空格。

使用方法:

message.BodyPlainText = Regex.Replace(message.BodyPlainText, "^[ ]*|[ ]*$", "", RegexOptions.Multiline);

现在您的消息将删除空格。

【讨论】:

  • 感谢您的回答。但是,因为这是一个富文本编辑器,用户可能故意在行首添加了空格,所以我不能以这种方式删除所有空格。
  • @MikeMakos 你的富编辑器控件本身没有任何纯文本检索方式吗?
猜你喜欢
  • 2019-09-15
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
相关资源
最近更新 更多