如果您有一个带有 HTML 作为替代视图的文本正文(我推荐),您需要执行以下操作:
var message = Populate(m =>
{
m.Subject = subject;
m.ViewName = viewName;
m.To.Add(model.CustomerEmail);
m.From = new System.Net.Mail.MailAddress(model.FromEmail);
});
// get the BODY so we can process it
var body = EmailBody(message.ViewName);
var processedBody = PreMailer.Net.PreMailer.MoveCssInline(body, true).Html;
// start again with alternate view
message.AlternateViews.Clear();
// add BODY as alternate view
var htmlView = AlternateView.CreateAlternateViewFromString(processedBody, new ContentType("text/html"));
message.AlternateViews.Add(htmlView);
// add linked resources to the HTML view
PopulateLinkedResources(htmlView, message.LinkedResources);
注意:即使您认为自己不关心文本,它也可以帮助过滤垃圾邮件。
我建议阅读MailerBase 的源代码,以便更好地了解发生了什么,因为所有这些Populate
方法都会让人感到困惑。
注意:这可能不会按原样运行,但您明白了。我有代码(未显示)可以解析任何 img 标签并添加为自动附件。
重要的部分是清除 HTML 替代视图。您必须有一个.text.cshtml
用于文本视图的文件。