3

ブートストラップとブートストラップ テーマを使用する Web サイトがあります。私のウェブサイトは、特定のアクションをトリガーしたときに、ウェブサイトのユーザーに通知メールも送信します。

送信される通知メールの本文を、メインの Web サイトと同じルック アンド フィールの適切にフォーマットされた HTML コンテンツにしたいと考えています。

私は常に DRY コードを書き、物事を可能な限り保守しやすくするように教えられてきたので、私の Web サイトが埋め込みファイルとして使用しているのと同じブートストラップ CSS をメールに含め、HTML 本文がその CSS を参照するようにしたいと考えています。 Web サイトのテーマを変更すると、通知メールのスタイルが自動的に変更されます。

System.Net.Mail.SmtpClientメールの送信に使用し、AlternateViews を使用してコンテンツを追加しています。メールがオフラインで表示される場合に備えて、サイトの css へのライブ参照を含めたくないので、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/csscssをポップインおよびポップアウトできるようにするために何を使用できますか?

4

1 に答える 1

4

このコードを使用して CSS コンテンツを取得する方法を見つけました。

var cssBundle = BundleTable.Bundles.GetBundleFor("~/Content/css");
var css = cssBundle.GenerateBundleResponse(new BundleContext(new HttpContextWrapper(HttpContext.Current), BundleTable.Bundles, string.Empty)).Content;

ただし、mason が (コメントで) 予測したように、CSS は電子メールでは機能せず、サイズが大きすぎるため、単純に基本的な CSS を HTML に埋め込むことにします。

于 2015-03-26T13:10:25.867 に答える