![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Более сложный случай
Всё это хорошо, но если нам необходимо рассылку с кучей акционных предложений, то данный формат нам не подойдет. Во-первых, сложно подобный шаблон задавать в Web.config, во-вторых, количество параметров не известно. Как и обычные html-шаблоны, шаблон письма было бы чудесно задать во View. Что ж, рассмотрим библиотеку ActionMailer (https://nuget.org/packages/ActionMailer): PM> Install-Package ActionMailer Successfully installed 'ActionMailer 0.7.4'. Successfully added 'ActionMailer 0.7.4' to LessonProject.Model. Отнаследуем MailController от MailerBase: public class MailController: MailerBase { public EmailResult Subscription(string message, string email) { To.Add(email); Subject = " Рассылка"; MessageEncoding = Encoding.UTF8; return Email(" Subscription", message); }
} Добавим Subscription. html. cshtml View (/Areas/Default/Views/Mail/Subscription. html. cshtml): @model string @{ Layout = null; } <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" " https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html> < head> < meta http-equiv=" Content-Type" content=" text/html; charset=UTF-8" />
< /head> < body> < div> < h1> @Model< /h1> < /div> < /body> < /html>
Добавляем в Web.config конфигурацию для работы с почтой (Web.config): < system.net> < mailSettings> < smtp deliveryMethod=" Network" from=" lxndrpetrov@gmail.com " > < network host=" smtp.gmail.com" port=" 587" userName=" lxndrpetrov" password=" ******" enableSsl=" true" /> < /smtp> < /mailSettings> < /system.net> И создаем в UserController.cs тестовый метод (/Areas/Default/Controllers/UserController.cs): [Authorize] public ActionResult SubscriptionTest() { var mailController = new MailController();
var email = mailController.Subscription(" Привет, мир! ", CurrentUser.Email); email.Deliver(); return Content(" OK"); } Запускаем: https://localhost/User/SubscriptionTest - и получаем на почту письмо. Рассмотрим пример получения текста письма в строку. Для этого понадобится StreamReader (/Areas/Default/Controllers/UserController.cs): [Authorize] public ActionResult SubscriptionShow() { var mailController = new MailController(); var email = mailController.Subscription(" Привет, мир! ", CurrentUser.Email);
using (var reader = new StreamReader(email.Mail.AlternateViews[0].ContentStream)) { var content = reader.ReadToEnd(); return Content(content); } return null; } В content уже есть сформированная страница. Запускаем: https://localhost/User/SubscriptionShow
|