C#HTML电子邮件 - 备用视图

时间:2011-11-11 20:13:45

标签: c# asp.net html-email

我在发送HTML电子邮件时遇到了测试备用视图的问题。我正在创建以纯文本形式发送邮件,但我包含HTML备用视图。我曾尝试使用多个电子邮件客户端,但我无法看到纯文本版本。我主要担心的是,使用纯文本客户端的人将无法正确查看。请参阅下面的代码:

MailMessage message = new MailMessage();

message.To.Add("email");
message.From = new MailAddress("fromaddress");
message.Subject = "subject"
//Plain text version of e-mail
message.Body = _formattedPlainText;
message.IsBodyHtml = false;

AlternateView htmlView = CreateHTMLView();

message.AlternateViews.Add(htmlView);
//message.AlternateViews.Add(plainTextView);

smtp.Send(message);

private AlternateView CreateHTMLView()
{
    AlternateView htmlView =  AlternateView.CreateAlternateViewFromString(_formattedHTML, null, System.Net.Mime.MediaTypeNames.Text.Html);

    //Code for adding embedded images...

    return htmlView;
}

是否有理由相信没有收到纯文本版本,或者您知道哪些客户肯定只能接收纯文本电子邮件?

提前致谢

更新:

您可以通过按选项箭头并选择“消息文字乱码?”选项在GMAIL中强制显示纯文本。

2 个答案:

答案 0 :(得分:1)

  

是否有理由相信未收到纯文本版本   或者你知道哪些客户肯定只能收到   纯文本电子邮件?

不,PINE

您可以在任何* nix操作系统中使用mail命令来阅读电子邮件。它只会以文本格式显示电子邮件。

<强>更新

A guy here,声称如果给出选项,GMAIL ONLY会以纯文本显示电子邮件。如果情况仍然如此,我发现谷歌的默认选择很尴尬。

答案 1 :(得分:1)

通过一些实验,我得到了最好的结果:

设置两个备用视图,一个HTML和一个纯文本。 然后,单独保留MailMessage.Body(默认/未定义)和 默认情况下保留MailMessage.IsBodyHtml。我的代码段:

                myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(HtmlMessage, new System.Net.Mime.ContentType("text/html")));
        myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(TextMessage, new System.Net.Mime.ContentType("text/plain")));
    //    myMessage.Body = HtmlMessage;
    //    myMessage.IsBodyHtml = true;
        myClient.UseDefaultCredentials = false;
        NetworkCredential credentials = new NetworkCredential("xxxx","xxxxx");
        myClient.Credentials = credentials;
        myClient.DeliveryMethod = SmtpDeliveryMethod.Network;

我已经使用发送到Windows Outlook客户端和Mac用户的消息对此进行了测试,它似乎工作得很好。电子邮件客户端软件选择视图。我仍然需要测试它如何适用于webmail应用程序等客户端。您的里程可能会有所不同。

鲍勃