ASP.net / C# Email with AlternateViews to Show HTML 而不是纯文本
ASP.net / C# Email with AlternateViews to Show HTML not the PlainText
目前我可以使用 ASP.net 正确发送 HTML 电子邮件。我注意到,如果您同时提供纯文本视图和 HTML 视图,使用 https://www.mail-tester.com/ 这样的垃圾邮件测试器会得到更好的分数。所以我决定尝试添加备用视图。我的问题是,如果我尝试添加纯文本视图,它似乎会覆盖 HTML 视图。以下代码非常适合设置我的 HTML 视图:
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.UTF8;
message.BodyTransferEncoding = TransferEncoding.Base64;
message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>";
现在,如果我尝试添加纯文本视图,Gmail 似乎只想显示纯文本视图,而不是 HTML 视图。无论如何设置哪个视图是默认的?这是我的纯文本查看代码:
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.UTF8;
message.BodyTransferEncoding = TransferEncoding.Base64;
message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>";
//first we create the Plain Text part
var plainView = AlternateView.CreateAlternateViewFromString(HtmlToPlainText(message.Body), Encoding.UTF8, MediaTypeNames.Text.Plain);
////then we create the Html part
var htmlView = AlternateView.CreateAlternateViewFromString(message.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
message.AlternateViews.Add(htmlView);
message.AlternateViews.Add(plainView);
我尝试删除正文的第一个显示代码并将正文设置为空字符串,以便它只添加两个备用视图,但没有用。我相信我涵盖了代码的所有排列,但仍然没有。就像我说的那样,它仅适用于 HTML,并且适用于 html 备用视图,但在添加纯文本视图时却不行。
您先创建纯文本版本,但在 HTML 版本之后添加它。根据下面的参考,纯文本版本必须在前。
您可能还注意到在代码示例中,IsBodyHtml
是为每个版本单独设置的:它是 false
用于纯文本版本,true
用于 HTML版本。
Correct Syntax for Generating HTML Email using AlternateView
目前我可以使用 ASP.net 正确发送 HTML 电子邮件。我注意到,如果您同时提供纯文本视图和 HTML 视图,使用 https://www.mail-tester.com/ 这样的垃圾邮件测试器会得到更好的分数。所以我决定尝试添加备用视图。我的问题是,如果我尝试添加纯文本视图,它似乎会覆盖 HTML 视图。以下代码非常适合设置我的 HTML 视图:
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.UTF8;
message.BodyTransferEncoding = TransferEncoding.Base64;
message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>";
现在,如果我尝试添加纯文本视图,Gmail 似乎只想显示纯文本视图,而不是 HTML 视图。无论如何设置哪个视图是默认的?这是我的纯文本查看代码:
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.UTF8;
message.BodyTransferEncoding = TransferEncoding.Base64;
message.Body = "<html lang=\"en\"><head><meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"></head><body>" + message.Body + "</body></html>";
//first we create the Plain Text part
var plainView = AlternateView.CreateAlternateViewFromString(HtmlToPlainText(message.Body), Encoding.UTF8, MediaTypeNames.Text.Plain);
////then we create the Html part
var htmlView = AlternateView.CreateAlternateViewFromString(message.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
message.AlternateViews.Add(htmlView);
message.AlternateViews.Add(plainView);
我尝试删除正文的第一个显示代码并将正文设置为空字符串,以便它只添加两个备用视图,但没有用。我相信我涵盖了代码的所有排列,但仍然没有。就像我说的那样,它仅适用于 HTML,并且适用于 html 备用视图,但在添加纯文本视图时却不行。
您先创建纯文本版本,但在 HTML 版本之后添加它。根据下面的参考,纯文本版本必须在前。
您可能还注意到在代码示例中,IsBodyHtml
是为每个版本单独设置的:它是 false
用于纯文本版本,true
用于 HTML版本。
Correct Syntax for Generating HTML Email using AlternateView