У меня есть веб-сайт, который использует загрузочную и загрузочную тему. Мой веб-сайт также отправляет уведомления электронной почты пользователям веб-сайта, когда они вызывают определенные действия.Прочитайте содержимое CSS из пакета в коде на веб-сайте ASP.NET MVC
Я хочу, чтобы тело электронного письма с уведомлением было отправлено, чтобы быть хорошо отформатированным HTML-контентом с тем же внешним видом и ощущением, что и основной веб-сайт.
Меня всегда учили писать DRY-код и делать вещи максимально возможными, поэтому я хочу включить тот же самый загрузочный CSS-код, который мой веб-сайт использует в качестве встроенного файла в электронном письме, и имеет ссылку на тело HTML что CSS, так что, если я решит изменить тему своего веб-сайта, он автоматически переименует мои уведомления по электронной почте.
Я использую 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/css
и выйдет ли css?
Вы можете сделать веб-запрос на свой веб-сайт по этому URL-адресу. Но в любом случае, возможно, плохая идея. CSS в письмах сильно отличается от CSS на веб-странице, потому что не все почтовые клиентские программы поддерживают весь спектр CSS. Результат может оказаться нечитаемым адресом электронной почты. – mason
@mason: Ах да ... не думал об этом ... не идеален, но может быть обходным путем, пока я не найду лучший способ. Благодарю. – BG100