C# 如何防止HTML电子邮件在使用System.Net.Mail.MaiMessage使用C发送时引用可打印内容
我正在尝试使用C VS2012.NET 4.5 System.NET.Mail.MailMessage向gmail地址发送电子邮件 已发送电子邮件,但始终具有:C# 如何防止HTML电子邮件在使用System.Net.Mail.MaiMessage使用C发送时引用可打印内容,c#,.net,css,email,mailmessage,C#,.net,Css,Email,Mailmessage,我正在尝试使用C VS2012.NET 4.5 System.NET.Mail.MailMessage向gmail地址发送电子邮件 已发送电子邮件,但始终具有: Content-Transfer-Encoding: quoted-printable 当我在邮件客户端gmail web邮件客户端中查看电子邮件的来源时 我已经尝试了我所能想到的各种不同的组合,包括BodyEncoding、BodyTransferEnconding和DeliveryFormat等。。。但是没有什么能摆脱这个引用的可
Content-Transfer-Encoding: quoted-printable
当我在邮件客户端gmail web邮件客户端中查看电子邮件的来源时
我已经尝试了我所能想到的各种不同的组合,包括BodyEncoding、BodyTransferEnconding和DeliveryFormat等。。。但是没有什么能摆脱这个引用的可打印文件
问题是CSS在电子邮件中不起作用。HTML呈现正常,但没有应用CSS,当我查看电子邮件源时,我看到它在所有=符号之后插入了这个3D,这阻止了我的CSS工作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir=3D"ltr" xml:lang=3D"en" xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv=3D"Content-Type" content=3D"Type=3Dtext/html; charset=3Dut=f-8" />
<style type=3D"text/css">
...
我发送的HTML是从序列化到web.config的字符串加载的,如下所示:
using (MailMessage _MailMessage = new MailMessage("[SENDER_EMAIL_REMOVED]", "[RECIPIENT_EMAIL_REMOVED]"))
{
SmtpClient _SmtpClient = new SmtpClient("smpt.gmail.com", 587);
_SmtpClient.EnableSsl = true;
_SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
_SmtpClient.UseDefaultCredentials = false;
_SmtpClient.Credentials = new System.Net.NetworkCredential("[USERNAME_REMOVED]","[PASSWORD_REMOVED]");
_MailMessage.Subject = ""Test Email";
_MailMessage.BodyEncoding = System.Text.Encoding.UTF8;
_MailMessage.BodyTransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
_SmtpClient.DeliveryFormat = SmtpDeliveryFormat.SevenBit;
_MailMessage.Body = _MessageBody;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="Type=text/html; charset=utf-8" />
<title>Page Title</title>
<style type="text/css">
.style1 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
.style2 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight:bold; }
.tblRowHdrCol {font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight:bold; background-color:#f0f0f0; width:180px; }
.tblRowValCol {font-family: Arial, Helvetica, sans-serif; font-size: 12px; padding-left:10px; width:100%; }
</style>
</head>
<body>
<p class="style1"><img src="http://www.domain.comn/image.jpg" alt="Some Image" /></p>
<p class="style1">
Some text here...
</p>
<table width="100%">
<tr>
<td class="tblRowHdrCol">Field One:</td>
<td class="tblRowValCol">[FIELD_ONE]</td>
</tr>
<tr>
<td class="tblRowHdrCol">Field Two:</td>
<td class="tblRowValCol">[FIELD_TWO]</td>
</tr>
<tr>
<td class="tblRowHdrCol">Field Three:</td>
<td class="tblRowValCol">[FIELD_THREE]</td>
</tr>
<tr>
<td class="tblRowHdrCol">Field Four:</td>
<td class="tblRowValCol">[FIELD_FOUR]</td>
</tr>
<tr>
<td class="tblRowHdrCol" colspan="2">Exception Details:</td>
</tr>
<tr>
<td class="tblRowValCol" colspan="2" style="padding-left:1px">[EXCEPTION_DETAILS]</td>
</tr>
</table>
</body>
</html>
它添加了这个,但当我在gmail中查看邮件来源时,上面仍然有引用的可打印内容
问候,
Scott据我所知,css无法正常工作。 我认为您必须转换html,以便将样式从样式标记中取出,并内联放置到html标记中。
有很多工具可以做到这一点,如果您想在C中动态地实现这一点,请看以下内容:感谢您的响应。这使它工作起来,即使在3D的插入后,永远=符号。让我吃惊的是,我在看一封Telerik HTML电子邮件,查看源代码,他们在标题中的一个样式元素中有样式,他们的内容传输编码是7BIT,他们没有到处插入臭名昭著的3D。但是当我更仔细地观察时,我发现他们实际上没有使用标题中的样式,而且他们确实有内联样式。再次感谢你-这没有什么区别,因为引用的可打印编码也会破坏内联样式。问题是,如何防止QP编码,但切换到内联样式对QP编码没有影响。如果有办法防止这种情况发生,我真的很想知道,因为我的整个Gmail收件箱都是QP编码的,就在几天前,不知道为什么!
_MailMessage.Headers.Add("Content-Transfer-Encoding", "7BIT");