MailAddress to = new MailAddress(emailTo, emailToName);
MailMessage message = new MailMessage(from, to);
message.Subject = dtlSubscribe.Rows[i]["NewsLetter_Title"].ToString().Trim();
message.IsBodyHtml = true;
string msgBody = "<html><body>" + dtlSubscribe.Rows[i]["NewsLetter_Body"].ToString().Trim() + "</body></html>";
Console.WriteLine(msgBody);
message.Body = msgBody;
SmtpClient client = new SmtpClient(SMTPServer, 25);
client.Send(message);
message.Dispose();
这就是我在代码中编写电子邮件的方式。
在msgBody
中,我放<html><body>
然后放置从数据库中检索的记录。
这就是我得到的。
<ol> <li>Number1</li> <li>Number2</li> <li><p>Number3</p> </li> </ol> <p><a title="/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade3afdd2f.jpg" onkeypress="this.onclick();" onclick="try{window.open('/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade3afdd2f.jpg', 'MyImage', 'resizable=yes, scrollbars=yes, width=790, height=580')}catch(e){};return false;" href="#"><img title="DiagnosticsService1" border="0" alt="DiagnosticsService1" src="/NHGD/assets/0/71/90/92/thumb_b834e617-473d-49e8-beb1-ecade3afdd2f.jpg" /></a></p> <p> </p> <p>End<br /></p>
除了我自己放入的<html><body>
之外......我的数据库记录没有格式化。
所以,我调试了一下......发现了这个..
<html><body><ol>
<li>Number1</li>
<li>Number2</li>
<li><p>Number3</p>
</li>
</ol>
<p><a title="/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade
3afdd2f.jpg" onkeypress="this.onclick();" onclick="try{windo
w.open('/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade3afdd2f.jpg', 'MyIm
age', 'resizable=yes, scrollbars=yes, width=790, height=580')}catch(e){};return
false;" href="#"><img title="DiagnosticsService1"
border="0" alt="DiagnosticsService1" src="/NHGD/assets
/0/71/90/92/thumb_b834e617-473d-49e8-beb1-ecade3afdd2f.jpg" /></a>
</p>
<p> </p>
<p>End<br /></p></body></html>
<html><body><ol>
<li>Number1</li>
<li>Number2</li>
<li><p>Number3</p>
</li>
</ol>
<p><a title="/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade
3afdd2f.jpg" onkeypress="this.onclick();" onclick="try{windo
w.open('/NHGD/assets/0/71/90/92/b834e617-473d-49e8-beb1-ecade3afdd2f.jpg', 'MyIm
age', 'resizable=yes, scrollbars=yes, width=790, height=580')}catch(e){};return
false;" href="#"><img title="DiagnosticsService1"
border="0" alt="DiagnosticsService1" src="/NHGD/assets
/0/71/90/92/thumb_b834e617-473d-49e8-beb1-ecade3afdd2f.jpg" /></a>
</p>
<p> </p>
<p>End<br /></p></body></html>
发现当它存储到数据库中时,所有特殊字符都已更改为。
这就是保存到数据库时没有错误的原因。
现在,我的问题是如何将它们改回原来的角色?
这样,它将被正确格式化..
非常感谢..
答案 0 :(得分:2)
答案 1 :(得分:1)
是的,这是真的你无法将html数据保存到数据库。您必须使用Server.HtmlEncode
将字符串转换为html编码的字符串,以避免页面验证错误等。
如果您从数据表中访问Html编码数据,请使用Server.HtmlDecode
()。
请按照以下方式获取更多信息:
Server.HtmlEncode:http://msdn.microsoft.com/en-us/library/ms525347%28v=vs.90%29.aspx
Server.HtmlDecode:http://msdn.microsoft.com/en-us/library/hwzhtkke.aspx
String msgBody = "<html><body>" + Server.HtmlDecode(dtlSubscribe.Rows[i]["NewsLetter_Body"].ToString().Trim()) + "</body></html>";
答案 2 :(得分:0)
您可以使用HttpUtility HtmlDecode/HtmlEncode
方法来获得所需内容。
使用System.Web;
var encoded = HttpUtility.HtmlEncode(未编码);
此外,还有一篇有趣的文章Here
可替换地
public static string CustomHtmlEncode(string value)
{
char[] chars = HttpUtility.HtmlEncode(YourDbString).ToCharArray();
StringBuilder encodedValue = new StringBuilder();
foreach(char c in chars)
{
if ((int)c > 127) // above normal ASCII
encodedValue.Append("&#" + (int)c + ";");
else
encodedValue.Append(c);
}
return encodedValue.ToString();
}