我有一个使用bootstrap和bootstrap主题的网站。我的网站在触发某些操作时也会向网站用户发送通知电子邮件。
我希望发送的通知电子邮件的正文是格式良好的HTML内容,其外观和感觉与主网站相同。
我一直被教会编写DRY代码,并尽可能地维护,所以我想包含我的网站用作电子邮件中嵌入文件的相同引导程序CSS,并拥有HTML正文引用CSS,这样如果我决定更改我的网站主题,它会自动重新设置我的通知电子邮件样式。
我使用System.Net.Mail.SmtpClient
发送电子邮件,并使用AlternateViews添加内容。我不希望在线下查看电子邮件时将实时参考包含在我的网站上,因此我想嵌入css。
我一直坚持如何将CSS文件读入字符串,并将其附加到电子邮件中。在我的BundleConfig中,我有这个:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap-sandstone.css",
"~/Content/site.css"));
所以我试过了:
var css = File.ReadAllText(HttpContext.Current.Server.MapPath("~/Content/css"));
但正如我想的那样,它会抛出一个FileNotFound异常。
我可以使用哪些内容让我传入~/Content/css
然后弹出css?
答案 0 :(得分:3)
我找到了一种使用此代码获取CSS内容的方法:
var cssBundle = BundleTable.Bundles.GetBundleFor("~/Content/css");
var css = cssBundle.GenerateBundleResponse(new BundleContext(new HttpContextWrapper(HttpContext.Current), BundleTable.Bundles, string.Empty)).Content;
然而,正如梅森预测的那样(在评论中)CSS在电子邮件中不起作用,并且它太大了,所以我只是简单地在HTML中嵌入基本的CSS