c#发送html电子邮件模板时包含css无效
我试图发送html电子邮件模板,它工作得很完美,但当我放置css内部样式时,它给出了错误:输入字符串的格式不正确 我的html模板工作正常:c#发送html电子邮件模板时包含css无效,c#,html,css,asp.net-mvc,email,C#,Html,Css,Asp.net Mvc,Email,我试图发送html电子邮件模板,它工作得很完美,但当我放置css内部样式时,它给出了错误:输入字符串的格式不正确 我的html模板工作正常: <h3>data</h3> <hr /> <table class="table table-striped table-bordered table-advance table-hover"> <tr> <td>data </td>
<h3>data</h3>
<hr />
<table class="table table-striped table-bordered table-advance table-hover">
<tr>
<td>data </td>
<td>{0}</td>
</tr>
<tr>
<td>data </td>
<td>{1}</td>
</tr>
<tr>
<td>data</td>
<td>{2}</td>
</tr>
<tr>
<td>data</td>
<td>{3}</td>
</tr>
<tr>
<td>data</td>
<td>{4}</td>
</tr>
<tr>
<td>data</td>
<td>{5}</td>
</tr>
<tr>
<td>data</td>
<td>{6}</td>
</tr>
</table>
以及我的“发送邮件”方法:
public static void SendEmail(string messageContent, string toEmail, string subject, C_GeneralSettings emailEntity)
{
//Check if email service is allowed
bool allowEmailService = emailEntity.AllowEmailService;
if (!allowEmailService)
return;
//Construct mail message
string from = emailEntity.Email;
string displayName = emailEntity.DisplayName;
string to = toEmail;
MailMessage message = new MailMessage();
message.From = new MailAddress(from, displayName);
message.To.Add(new MailAddress(to));
message.Subject = subject;
message.IsBodyHtml = true;
message.Body = messageContent;
//Get mail settings from config file
string host = emailEntity.Host;
string username = emailEntity.Email;
string password = emailEntity.Password;
int port = emailEntity.Port;
bool enableSsl = emailEntity.EnableSSL;
//Send the message
SmtpClient smtp = new SmtpClient();
smtp.Host = host;
smtp.Port = port;
smtp.Credentials = new System.Net.NetworkCredential(username, password);
smtp.EnableSsl = enableSsl;
smtp.Send(message);
}
有一种解决方案是以内联方式放置css,但它的方式很累, 例如:
<table dir="rtl" width="100%" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td style=""><img style="display:block; width:150px; margin-bottom:10px;" src="http://www.mitghamronline.com/up/uploads/14739221.png" alt=""></td>
</tr>
</table>
这种方法很有效,不会给我以前的错误,但是如果有人知道一种内部编写css的方法,它会比使用
<style type="text/css">
table td{border:solid 1px;}
</style>
表td{border:solid 1px;}
另一件事是,如果你在gmail中查看,它不会应用任何边框,但在outlook中你可以查看边框
但是你可以试一下使用。
message.BodyEncoding=System.Text.Encoding.UTF8
如果这不起作用,您可能有一些输入无法正确转换。当我使用内部CSS时,会出现错误,因为我使用string.format绑定数据 内部CSS使用花括号,因此会导致类似这样的错误, 因此,如果您需要在动态html电子邮件模板中使用内部CSS,您可以使用string.replace 您的html模板如下所示:
<h3>data</h3>
<hr />
<table class="table table-striped table-bordered table-advance table-hover">
<tr>
<td>data </td>
<td>#name#</td>
</tr>
</table>
<style type="text/css">
table td{border:solid 1px;}
</style>
{border:solid 1px;}
您应该使用内联样式元素对该元素进行编码..或者通过下面的链接..这可能会有所帮助you@MilindRajput问题与风格的出现与否无关,问题在于c#reading和process不完整时会出现错误
<style type="text/css">
table td{border:solid 1px;}
</style>
<h3>data</h3>
<hr />
<table class="table table-striped table-bordered table-advance table-hover">
<tr>
<td>data </td>
<td>#name#</td>
</tr>
</table>
<style type="text/css">
table td{border:solid 1px;}
</style>
string message = System.IO.File.ReadAllText(Server.MapPath("~/EmailTemplates/Template.html"));
message = message.Replace("#name#", name);