2

因此.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 电子邮件正文。

4

2 回答 2

4

我总是使用它来结合 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;
于 2013-04-22T10:20:05.837 回答
0

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

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

于 2013-04-22T14:25:44.790 回答