字符串中的url问题

时间:2013-12-27 16:54:32

标签: c# html

我想发送一封包含SmtpClient的电子邮件,我在构建正文时遇到问题。

我想发送一封带有html文字的电子邮件。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
 <p> some text </p>
</body>
</html>

我想把它放在一个字符串中,但我遇到了第一行的问题。 我正在努力:

StringBuilder mailbody = new StringBuilder();
 mailbody.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "http://www.w3.org/TR/html4/loose.dtd\" >");

不起作用,有人知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

该字符串包含双引号,您需要转义它们。看起来你试图这样做,但你错过了一个:

StringBuilder mailbody = new StringBuilder();
mailbody.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\" >");

答案 1 :(得分:0)

StringBuilder mailbody = new StringBuilder();
mailbody.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\" >");

您错过了\

或者因为HTML不在乎你可以用字符串中的"替换'(当然不在它周围,因为C#确实在意)。

StringBuilder mailbody = new StringBuilder();
mailbody.Append("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd' >");

答案 2 :(得分:0)

您应该通过以@字符开头的字符串来使用逐字字符串文字。这允许您根据需要将字符串拆分为多行,并且不需要您转义反斜杠等内容。

但是, 需要通过将两个引号放在一起来转义字符串文字中的任何双引号。所以你的电子邮件声明如下:

StringBuilder mailbody = new StringBuilder();
mailbody.Append(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN""
""http://www.w3.org/TR/html4/loose.dtd"">
<html>
<body>
   <p> some text </p>
</body>
</html>");