我正在通过C#SMTP发送电子邮件。这是一封HTML电子邮件,其中用
标签将行分隔开,例如:
亲爱的测试,
您的密码请求已启动 帐户。请单击此链接。...
这在Outlook收件箱中可以很好地呈现,但是在Gmail中,它似乎忽略了
标记:
为什么Gmail无法呈现HTML?通过网络浏览器得到的结果与Android电子邮件客户端的结果相同。
当我查看Gmail电子邮件的来源并从Gmail下载.eml文件时,该电子邮件包含br标签。
我尝试用换行符替换br标签,但是当我这样做时,情况恰好相反-它不会在Outlook中呈现换行符,但会在Gmail中呈现它们。
这里实际发生了什么,我如何满足所有电子邮件客户端?
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
这是我用于生成电子邮件的C#:
var mailMessage = new MailMessage
{
Subject = subject,
BodyEncoding = Encoding.UTF8,
From = new MailAddress(EmailFrom),
IsBodyHtml = true
};
var htmlView = AlternateView.CreateAlternateViewFromString(body.ReplaceLineBreaksWithHtmlLineBreak(), new ContentType("text/html"));
htmlView.ContentType.CharSet = Encoding.UTF8.WebName;
mailMessage.AlternateViews.Add(htmlView);
var plainView = AlternateView.CreateAlternateViewFromString(body.StripHtml(), new ContentType("text/plain"));
plainView.ContentType.CharSet = Encoding.UTF8.WebName;
mailMessage.AlternateViews.Add(plainView);
对于HTML电子邮件,我将模板字符串中的换行符替换为br标签。对于纯文本视图,将删除所有HTML。
更新: 事实证明,我不小心删除了换行符。这解决了问题,但是我还有一个问题是,为什么Gmail似乎只呈现电子邮件的纯文本版本?