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