Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SMTP HTML电子邮件未通过Gmail电子邮件客户端呈现HTML_C#_.net_Email_Smtp_Html Email - Fatal编程技术网

C# SMTP HTML电子邮件未通过Gmail电子邮件客户端呈现HTML

C# SMTP HTML电子邮件未通过Gmail电子邮件客户端呈现HTML,c#,.net,email,smtp,html-email,C#,.net,Email,Smtp,Html Email,我正在通过C#SMTP发送电子邮件。这是一封HTML电子邮件,通过标记分隔行,例如: 亲爱的测试,您的密码请求已启动 账户请点击此链接 这在Outlook收件箱中显示良好,但在Gmail中它似乎忽略了标记: Gmail 展望 为什么Gmail不呈现HTML?通过网络浏览器获得的结果与Android电子邮件客户端相同 当我查看Gmail电子邮件的来源并从Gmail下载.eml文件时,电子邮件包含br标签 我试着用换行符替换br标签,但当我这样做时,情况正好相反——它不会在Outlook中呈现换

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

亲爱的测试,

您的密码请求已启动 账户请点击此链接

这在Outlook收件箱中显示良好,但在Gmail中它似乎忽略了
标记:

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看起来只呈现电子邮件的纯文本版本

你从未设置过电子邮件的实际正文?可能您的视图htmlView是多余的。只需将主体设置为HTML。您只需要为您的plainView提供一个备用视图。您最好使用字符串生成器在邮件正文上呈现HTML。@MdFaridUddinKiron这与什么有关系?@mason如您所建议,我设置了HTML的主体,只为纯文本版本添加了一个替代视图,但当我设置完后,由于某种原因,HTML标记最终显示在呈现的电子邮件上。