c# – 如何在MailMessage中正确添加CSS
作者:互联网
我正在向MailMessage.Body写一些HTML,并希望包含一些CSS来格式化字体,表格等.我无法正确地形成最终的HTML.
例如:
public static void CreateMessageWithMultipleViews(string server, string recipients)
{
// Create a message and set up the recipients.
MailMessage message = new MailMessage("jane@contoso.com","joe@contoso.com");
// Construct body as HTML.
message.Body = @"<html>
<head>
<style>
p{
font-family:""Trebuchet MS"", Arial, Helvetica, sans-serif;
font-size:0.9em;
text-align:left;
}
</style>
</head>
<body>
Some body text
</body>
</html>");
// Set this property so that HTML renders
message.IsBodyHtml = true;
// Send the message.
SmtpClient client = new SmtpClient(server);
client.Credentials = CredentialCache.DefaultNetworkCredentials;
try
{
client.Send(message);
}
catch (Exception ex)
{
Console.WriteLine("Exception caught: {0}",
ex.ToString() );
}
我的电子邮件收件人都使用Outlook 2010,这完全按预期呈现.但是我很难喜欢它 – 有重复的< html>和< header>最终电子邮件来源中的标签:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<html>
<head>
<style>
[..truncated..]
所以我的问题是,如何使用MailMessage正确设置电子邮件的HTML源代码以使其形成良好?我在MailMessage类中看到了一个’Header属性,但这是针对消息头而不是HTML头.我是否需要将CSS代码放在其他地方?
解决方法:
请记住,我只需要在Outlook 2010中正确呈现,我正在删除显式的< html>和< header>标签并允许MailMessage处理这些:
message.Body = @"
<style>
<!--
p{
[truncating the rest...]
}
--->
</style>";
当我在Outlook中收到电子邮件时,这是源的格式,它适用于渲染,它与以前一样不合逻辑(为了便于阅读,我更正了缩进):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head>
<style>
[css...]
</style>
<body>
[content...]
</body>
</html>
CSS仍未包含在标记内,但此时我很幸运HTML在Outlook客户端中正确呈现.
标签:c,css,net,email,mailmessage 来源: https://codeday.me/bug/20190629/1324393.html