2016-04-03 79 views
1

目前,我可以正确地发送一个HTML电子邮件与ASP.net。我注意到,如果您提供了纯文本视图以及HTML视图,那么使用垃圾邮件测试程序https://www.mail-tester.com/会给出更好的分数。所以我决定尝试添加备用视图。我的问题是,如果我尝试添加纯文本视图,它似乎覆盖HTML视图。下面是设置了我的HTML工作完全正常的代码只能查看:ASP.net/C#电子邮件与AlternateViews显示HTML而不是PlainText

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替代视图,但不能在添加纯文本视图时使用。

回答

1

您首先创建纯文本版本,但将其添加到HTML版本之后。根据下面的参考文献,纯文本版本必须首先出现。

您可能还会注意到,在代码示例中,每个版本都分别​​设置了IsBodyHtml:纯文本版本为false,HTML版本为true

Correct Syntax for Generating HTML Email using AlternateView

+0

谢谢我以为我先试过。 – Enkode

相关问题