html标签没有在c#string.format中格式化[重复]

Posted

技术标签:

【中文标题】html标签没有在c#string.format中格式化[重复]【英文标题】:Html tags not formating inside c# string.format [duplicate] 【发布时间】:2018-01-22 22:21:38 【问题描述】:

我正在尝试发送一封电子邮件,其中包含字符串和参数中的格式化 html。 我的代码是这样的:

string title = "Big";
string text = "<p>email stuff with <b>important</b> 0 stuff</p>";
string.Format(text, title);


MailMessage msz = new MailMessage();
var studentEmail = "someplace@somewhere.net";


msz.To.Add(new MailAddress(studentEmail, "Someone"));

msz.From = new MailAddress(from);                                    

msz.Subject = "Subject";
msz.Body = bodyText;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;

smtp.Send(msz);

我想在电子邮件中收到“important Big stuff”的电子邮件,但是我在电子邮件中收到了这个:&lt;p&gt;email stuff with &lt;b&gt;important&lt;/b&gt; 0 stuff&lt;/p&gt;

【问题讨论】:

你是如何发送电子邮件的? 您需要对文本进行转义。 无法在示例控制台应用程序上重现。它的格式为&lt;p&gt;email stuff with &lt;b&gt;important&lt;/b&gt; Big stuff&lt;/p&gt; 我正在使用 smtp 发送电子邮件 您是否将string.Format 的返回值分配给某个变量? :) 【参考方案1】:

您可以使用字符串插值直接添加您需要的值:

string title = "Big"

// Now this value has your expected output.
string text = $"<p>email stuff with <b>important</b> title stuff</p>";

【讨论】:

投反对票有什么原因吗?【参考方案2】:

实际上这将取决于您如何发送电子邮件。

您应该将文本存储到 Body 的一部分 MailMessage

string title = "Big";
string text = "<p>email stuff with <b>important</b> 0 stuff</p>";
string.Format(text, title);


MailMessage message = new MailMessage();
message.From = "sender@abc.com");
message.To.Add("dummy@abc.com");
message.Subject = title;
message.IsBodyHtml = true;
message.Body = text;

使用IsBodyHtml = true,它将帮助您格式化所有Html标签。

发送:

SmtpClient smtpClient = new SmtpClient()
...
smtpClient.Send(message);

【讨论】:

请添加否决理由 既然您已经提请注意您的代码,我也必须对其进行投票。帖子实际上并没有解释为什么 OP 与 String.Format 存在问题,并且此帖子中的代码与原始代码具有完全相同的问题 - String.Format 的结果被忽略。展示如何实际发送 HTML 电子邮件很好,但这不是要问的问题(忽略 cmets)。

以上是关于html标签没有在c#string.format中格式化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

尽管在 Swing 组件中使用 String.format,但格式仍会摆动

状态条标签中的 String.format() 值在 Win 7 和 Win XP 上显示不同

如何在 String.Format 下显示指数?

c#string.format的用法

JAVA字符串格式化String.format()的使用

用于 String.format() 的 Java 中 %ld 的 C++ 等效项