рд╣рдо ASP.NET MVC рд╕реЗ рдкрддреНрд░ рднреЗрдЬрддреЗ рд╣реИрдВ

рдЕрдХреНрд╕рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдЬ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ ActionMailer .Net рдХреА рдорджрдж рд╕реЗ рдпрд╣ рдХрд╛рд░реНрдп рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рдкрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн, рдкрддреНрд░ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдпрд╣ рддрдереНрдп рднреА рд╣реИ рдХрд┐ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рдореЗрд▓ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╕реАрдзреЗ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред NuGet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдХ ActionMailer рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
PM> Install-Package ActionMailer 


рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╣реЛрдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдЪрд╛рд░ рдХреНрд░рд┐рдпрд╛рдПрдБ рдЬреЛрдбрд╝реЗрдВрдЧреЗ: рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП, рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдлрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрд╕рдлрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
 public class HomeController : Controller { public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(EmailModel model) { throw new NotImplementedException(); } public ActionResult Success() { return View(); } public ActionResult Error() { return View(); } } 

рдЕрдм рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ:
 public class EmailModel { public string Subject { get; set; } public string From { get; set; } public string To { get; set; } public string Body { get; set; } } 

рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░рдг рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдЫреЛрдЯрд╛ рд╕рд╛ рд░реВрдк рд╣реЛрдЧрд╛:
 @model TestSendEmail.Models.EmailModel @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "Index"; } @using(Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "well"})) { @Html.ValidationSummary() <label>Subject</label> @Html.TextBoxFor(m => m.Subject, new { @class = "input-xxlarge" }) <label>To</label> @Html.TextBoxFor(m => m.To, new { @class = "input-xxlarge" }) <label>From</label> @Html.TextBoxFor(m => m.From, new { @class = "input-xxlarge" }) <label>Body</label> @Html.TextAreaFor(m => m.Body, new { @class = "input-xxlarge" }) <br/> <input type="submit" class="btn" value="Send"/> } 

рд╣рдореЗрдВ рдпрд╣ рдлрд╝реЙрд░реНрдо рдорд┐рд▓рддрд╛ рд╣реИ:

рдЕрдм рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдВ рдЬреЛ рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рдкрддреНрд░ рднреЗрдЬреЗрдЧрд╛ред рдЗрд╕реЗ EmailController рдХрд╣реЗрдВ рдФрд░ MailerBase рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВред рд╣рдо рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 public class EmailController : MailerBase { public EmailResult SendEmail(EmailModel model) { To.Add(model.To); From = model.From; Subject = model.Subject; return Email("SendEmail", model); } } 

рд╕реЗ, рд╕реЗ, рд╡рд┐рд╖рдп - рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЧреБрдг рд╣реИрдВ, рдФрд░ рдИрдореЗрд▓ рднреЗрдЬрддреЗ рд╕рдордп рдЙрдирд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ To рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд▓реНрдХ рдореЗрд▓рд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реИред рд╕реНрдкреИрдорд░ рдЖрдирдиреНрджрд┐рдд рд╣реЛрдВрдЧреЗред
рдЕрдм рд╣рдорд╛рд░реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреГрд╢реНрдп рднреЗрдЬреЗ рдЧрдП рдкрддреНрд░ рдХреЗ рд╢рд░реАрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддред рдЖрдк html рдорд╛рд░реНрдХрдЕрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
 @model TestSendEmail.Models.EmailModel @{ Layout = null; } <html> <body> <h1>@Model.Subject</h1> <p>@Model.Body</p> </body> </html> 

рдореИрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рджреЗрдЦреВрдВрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдирд╛рдо рд╣реЛрдЧрд╛: ResetPassword.cshtmlред ActionMailer рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛред Html рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдирд╛рдо рдирд┐рдореНрди рд░реВрдк рд▓реЗ: ResetPassword.html.cshtmlред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдмрдЪрдд рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрднрдЧ рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╕реНрдХ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ:
 <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="C:\" /> <network host="localhost" /> </smtp> </mailSettings> 

рдФрд░ рдореЗрд▓ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк:
 <mailSettings> <smtp deliveryMethod="Network"> <network host="smtp.gmail.com" userName="myemail@gmail.com" password="mypassword" enableSsl="true"/> </smtp> </mailSettings> 

рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ <system.net> рдЕрдиреБрднрд╛рдЧ рдореЗрдВ Web.config рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЦреИрд░, рдЕрдм рдЕрдкрдиреЗ рд╣реЛрдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХрд╛ рддрд░реНрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
 [HttpPost] public ActionResult Index(EmailModel model) { if (ModelState.IsValid) { try { new EmailController().SendEmail(model).Deliver(); return RedirectToAction("Success"); } catch (Exception) { return RedirectToAction("Error"); } } return View(model); } 

рдЕрдм, рдЬрдм рдЖрдк рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ рдкрддреНрд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛)ред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА:
http://geeksharp.com/2011/01/26/actionmailer-net-email-templates-for-the-mvc-crowd/


Source: https://habr.com/ru/post/In146939/


All Articles