MailMessage从MailBee到HTML到TEXT的转换增加了额外的空间

时间:2018-10-17 08:56:50

标签: c# .net mailmessage

我正在使用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之前,添加了额外的空间。 这是一个错误还是我做错了什么? 有人能帮我吗? 谢谢

1 个答案:

答案 0 :(得分:1)

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

^[ ]*|[ ]*$

它只是在行的开头或结尾匹配零个或多个空格。

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

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

使用方法:

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

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