Merhabalar,

ASP.NET MVC 3 ile beraber kolaylıkla mail göndermemiz için WebMail adında helper geldi. Bu yazıda basit bir iletişim formu oluşturup, WebMail sınıfımızı da kullanarak mail gönderme işlemini gerçekleştireceğiz.

 

 

Yeni bir (boş) MVC 3 projesi  açıyoruz. HomeController isminde controller ekliyoruz ve bu Controller’ımız için View dosyası oluşturuyoruz. Bu View dosyasını _Layout.cshtml ismindeki layout sayfamıza bağlıyoruz.

 

Oluşturduğumuz View(Home) dosyasını açıp, mail göndermemiz için gereken yazı ve buton nesnelerini oluşturacağız.

Index.cshtml

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

@Html.ValidationMessage("_HATA")

@using(Html.BeginForm("MailGonder","Home")){
<table>
<tr><td>Mail : </td><td>@Html.TextBox("mail")</td></tr>
<tr><td>Konu : </td><td>@Html.TextBox("konu")</td></tr>
<tr><td>İleti : </td><td>@Html.TextArea("ileti")</td></tr>
</table>
<input type="submit" value="Mail Gönder!"/>

} 

 

  • 8. satırda formumuzu post ettikten sonra çıkabilecek hatayı yazdırmak içindir.
  • 10. satırda form başlangıcını yaptık. Oluşturduğumuz form, “HomeController.cs” içine yaratacağımız “MailGonder” ismindeki action metoduna post olacaktır.
  • Diğer satırlarda ise bildiğiniz üzere input alanlarımızı helper metotları ile yarattık.

 HomeController.cs

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult MailGonder(string mail, string konu,string ileti)
        {
            try
            {
                WebMail.SmtpServer = "smtp.gmail.com";
                WebMail.EnableSsl = true;
                WebMail.UserName = "doru.yusuf@gmail.com";
                WebMail.Password = "123456"; // gerçek dışı
                WebMail.SmtpPort = 587;
                WebMail.Send(
                        "doru.yusuf@gmail.com",
                        konu,
                        ileti,
                        mail
                    );

                return RedirectToAction("Gonderildi");
            }
            catch (Exception ex)
            {
                ViewData.ModelState.AddModelError("_HATA", ex.Message);
            }

            return View("Index");
        }
        public string Gonderildi()
        {
            return "İletiniz başarıyla gönderildi";
        }

    }

 

 

 

“MailGonder” action metodunda olup biten;

 

  • View dosyamızdan gelen form nesneleri “MailGonder” action metoduna post oluyor.
  • [HttpPost] özniteliği sayesinde direk parametrelere veriler yazılıyor.
  •  try-catch blog ile oluşabilecek hatayı yakalayıp, View sayfasında gösteriliyor.
  • try blogunun arasındaki 1. satırda SMTP sunucusunu tanımladık.
    1. satırda Gmail için SSL aktif ettik.
    1. ve 4. satırlarda kullanıcı adı ve şifremizi yazdık.
    1. satırda Gmail’in kullandığı port’u tanımladık.
    1. satırda “WebMail.Send” metodu;
  •       1. parametresinde mailin kime gideceğini yazdık.
  •       2,3 ve 4. parametrelerini söylememe gerek yok sanırım 🙂
    1. satırda “RedirectToAction” metodu ile “Gonderildi” adındaki action metoduna yönleniyor. Aslında tek amacı “Mail’iniz gönderildi” mesajı vermektir.

Projemizi build edip, çalıştırdığımızda;

 

Mail gönder dediğimizde;

 

ve mail kutumuza baktığımızda 🙂