Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Более сложный случай






Всё это хорошо, но если нам необходимо рассылку с кучей акционных предложений, то данный формат нам не подойдет. Во-первых, сложно подобный шаблон задавать в 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







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.