Feedback + gmail account

Недавно, работая над собственным проектом с использованием 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 коммент.:

Отправить комментарий