SMTP HTML电子邮件无法通过Gmail电子邮件客户端呈现HTML

时间:2020-03-26 16:28:01

标签: c# .net email smtp html-email

我正在通过C#SMTP发送电子邮件。这是一封HTML电子邮件,其中用
标签将行分隔开,例如:

亲爱的测试,

您的密码请求已启动 帐户。请单击此链接。...

这在Outlook收件箱中可以很好地呈现,但是在Gmail中,它似乎忽略了
标记:

Gmail p

Outlook enter image description here

为什么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似乎只呈现电子邮件的纯文本版本?

0 个答案:

没有答案