【问题标题】:How wide is the support for email alternateviews?对电子邮件备用视图的支持范围有多大?
【发布时间】:2013-04-15 00:43:59
【问题描述】:

所以 .net 中的标准电子邮件 api 支持使用“备用视图”

http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.alternateviews.aspx

使用 AlternateViews 属性以不同格式指定电子邮件消息的副本。例如,如果您以 HTML 格式发送邮件,您可能还需要提供纯文本版本,以防某些收件人使用无法显示 HTML 内容的电子邮件阅读器。

要将备用视图添加到 MailMessage 对象,请为该视图创建一个附件,然后将其添加到 AlternateViews 返回的集合中。使用 Body 属性指定文本版本并使用 AlternateViews 集合指定具有其他 MIME 类型的视图。使用 MediaTypeNames 类成员指定备用视图的 MIME 类型。

对这种方法的支持范围有多大?我之所以问,是因为我很好奇是否值得努力定义文本和 html 电子邮件正文。

【问题讨论】:

  • 使用屏幕刮板的视障人士可能会使用纯文本版本。可以的话支持一下。

标签: .net email


【解决方案1】:

在某些情况下,邮件客户端会更喜欢电子邮件的文本替代方案,而不是电子邮件消息的 HTML 替代方案。例如,Windows 8 和 Windows Phone 8 中的邮件应用程序将显示替代文本(如果可用)而不是 HTML 版本。

我犯了一个错误,即在某些电子邮件中将字符串“仅 HTML”与 HTML 消息一起作为替代文本。所有这些客户能够看到的是“仅 HTML”。删除文本替代解决了这个问题。

【讨论】:

    【解决方案2】:

    我总是使用它来结合 html 和文本电子邮件(例如时事通讯)。实现起来并不难,所以我只是添加支持:

    var mail = new MailMessage();
    
    // TODO: Set up normal message such as recipient, reply address, etc
    
    if (!string.IsNullOrWhiteSpace(plainBody))
    {
        var plainView = AlternateView.CreateAlternateViewFromString(plainBody, null, "text/plain");
        mail.AlternateViews.Add(plainView);
    }
    
    if (!string.IsNullOrWhiteSpace(htmlBody))
    {
        var htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");
        if (linkedResources != null)
        {
            foreach (var linkedResource in linkedResources)
            {
                htmlView.LinkedResources.Add(linkedResource);
            }
        }
    
        mail.AlternateViews.Add(htmlView);
    }
    
    return mail;
    

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2021-10-10
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      相关资源
      最近更新 更多