Недавно, работая над собственным проектом с использованием ASP.NET MVC, столкнулся с задачей создания формы обратной связи на сайте с возможностью отправки введенных данных на почтовый ящик gmail.
Непосредственно с паттерном MVC познакомлю вас в следующей статье более подробно. В двух словах: приложение состоит из трех компонент - Модель (Model), Представление (View), Контроллер (Controller). Эти компоненты слабо связаны между собой, что предоставляет ряд преимуществ разработчику.
Предлагаю следующую реализацию задачи:
1. В директории Models создаем класс ContactMessage.cs, который будет описывать наше сообщение:public class ContactMessage { public string Name { get; set; } public string Email { get; set; } public string Body { get; set; } }
В данном классе я опустил реализацию валидации (проверки на корректность) вводимых данных на основании аннотации с помощью определенных атрибутов. Данный вопрос будет рассмотрен в следующей публикации.
2. Создаем класс EmailHelper.cs, в котором реализуем метод SendMail.
using System.Net.Mail; using System.Net; using System.Text; public class EmailHelper { public bool SendMail(ContactMessage model) { try { var fromAddress = new MailAddress("layillusion@gmail.com", model.Name); var toAddress = new MailAddress("andriy.nesterenko@gmail.com"); var utf8WithoutBom = new UTF8Encoding(false); string body = "Sender email: " + model.Email + "\n" + model.Body; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential(fromAddress.Address, "laystudio2010") }; using (var message = new MailMessage(fromAddress, toAddress) { BodyEncoding = utf8WithoutBom, Body = body }) { smtp.Send(message); } return true; } catch { return false; } } }
Для передачи данных используется протокол SMTP (Simple Mail Transfer Protocol), которые предназначен для передачи электронной почты.
3. Реализуем в главном контроллере HomeController.cs два метода Contact:
public ActionResult Contact() { ViewBag.MessageSent = false; return View(); } [HttpPost] public ActionResult Contact (ContactMessage model) { EmailHelper email = new EmailHelper(); if (ModelState.IsValid && email.SendMail(model)) { ViewBag.MessageSent = true; return View(); } else { ViewBag.MessageSent = false; return View(); } }
0 коммент.:
Отправить комментарий