Использование представлений Razor в качестве шаблонов электронной почты в приложении веб-форм - PullRequest
2 голосов
/ 17 мая 2011

У меня есть приложение asp.net Web Forms, которое должно отправлять электронные письма. Мне нравится синтаксис Razor, и, поскольку вы можете использовать Razor вне MVC, я решил попробовать это. Я видел, что вы можете программно передавать строку шаблона в бритву, но я хотел бы сохранить мои шаблоны бритвы в виде отдельных файлов .cshtml.

Есть ли у кого-нибудь простой идиотский совет, как это сделать? Я пытался загрузить их из файла следующим образом:

UserDetails userDetails = new UserDetails {Name = "Fred"};
string template = File.OpenText("Email/UserDetailsEmail.cshtml").ReadToEnd();            
string messageText = Razor.Parse(template, userDetails);

Все безрезультатно. Исключение при поиске файла. Я использую разоренгин dll.

У меня все остальное работает, сервер smtp и т. Д., Но только не просмотры.

Любая помощь приветствуется.

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Вам необходимо получить полный путь к файлу; относительные пути в конечном итоге будут относиться к неправильному местоположению.

запись

File.OpenText(Server.MapPath("~/Email/UserDetailsEmail.cshtml"))
1 голос
/ 17 мая 2011

Я бы использовал инструмент MVCMailer, который вы можете настроить с помощью Nuget и у которого есть леса для создания видов.

Это очень хорошо написанное приложение, которое можно легко добавить к вашему:

https://github.com/smsohan/MvcMailer

http://www.codeproject.com/KB/aspnet/MvcMailerNuGet.aspx

...