﻿
{"id":1590,"date":"2013-04-14T23:25:07","date_gmt":"2013-04-14T23:25:07","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1590"},"modified":"2013-04-14T23:29:24","modified_gmt":"2013-04-14T23:29:24","slug":"asp-net-mvc-4-0-webmail-nesnesi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-4-0-webmail-nesnesi\/","title":{"rendered":"Asp.NET MVC 4.0 WebMail Nesnesi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/04\/Mail.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1591\" alt=\"Mail\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/04\/Mail.png\" width=\"128\" height=\"128\" \/><\/a><br \/>\nBildi\u011finiz gibi C# programlama dilinde genellikle SMTP protokol\u00fcnden mail g\u00f6nderme i\u015flemlerini ger\u00e7ekle\u015ftiririz.Asp.NET MVC&#8217;de bizlere kolayl\u0131k olsun diye &#8220;System.Web.Helpers&#8221; k\u00fct\u00fcphanesinde &#8220;WebMail&#8221; s\u0131n\u0131f\u0131n\u0131 sunulmaktad\u0131r.Bu s\u0131n\u0131f\u0131n property ve metodlar\u0131n\u0131n, Asp.NET Web Form mimarisindeki &#8220;SmtpClient&#8221; ve &#8220;MailMessage&#8221; s\u0131n\u0131f\u0131nlar\u0131ndakilerden hi\u00e7 bir fark\u0131 yoktur.<br \/>\n<!--more--><br \/>\nE\u011fer yaz\u0131lar\u0131m\u0131 takip ediyorsan\u0131z bilirsiniz ki, ben bir konuyu detayl\u0131 bir bi\u00e7imde anlatmay\u0131 severim.Ancak bu konunun detay\u0131na inmek demek, burada yaz\u0131l\u0131 olarak bir proje ger\u00e7ekle\u015ftirmekten ibarettir.O y\u00fczden bir varsay\u0131m projesi \u00fczerinden konumuzun anlat\u0131m\u0131n\u0131 icra edece\u011fim.<\/p>\n<p>Varsayal\u0131m ki, bir MVC projesinde, Controller katman\u0131nda, &#8220;Mail(Controller).cs&#8221; isminde bir Controller s\u0131n\u0131f\u0131m\u0131z bulunsun.Bu Controller s\u0131n\u0131f\u0131m\u0131z\u0131n i\u00e7inde bulunan &#8220;Index&#8221; isimli Action metodumuzun View katman\u0131nda &#8220;.cshtml&#8221; uzant\u0131l\u0131 dosyas\u0131n\u0131 olu\u015fturmu\u015f olal\u0131m.<\/p>\n<p>Mail bilgilerini nesne olarak tutacak Entity s\u0131n\u0131f\u0131n\u0131 Model katman\u0131nda &#8220;Mail&#8221; ad\u0131yla a\u015fa\u011f\u0131daki gibi olu\u015fturuyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Mail\r\n    {\r\n        public string KullaniciAdi { get; set; }\r\n        public string Sifre { get; set; }\r\n        public string GonderilecekMail { get; set; }\r\n        public string Konu { get; set; }\r\n        public string Mesaj { get; set; }\r\n        public string GondericiMail { get; set; }\r\n    }\r\n<\/pre>\n<p>Bu &#8220;Index.cshtml&#8221; dosyam\u0131z\u0131n tasar\u0131m\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@model MvcApplication12.Models.Mail\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n&lt;h2&gt;Mail G\u00f6nder&lt;\/h2&gt;\r\n@using (Html.BeginForm())\r\n{\r\nKullan\u0131c\u0131 Ad\u0131 : @Html.TextBoxFor(model =&gt; model.KullaniciAdi)&lt;br \/&gt;\r\n\u015eifre : @Html.TextBoxFor(model =&gt; model.Sifre)&lt;br \/&gt;\r\nG\u00f6nderilecek Mail : @Html.TextBoxFor(model =&gt; model.GonderilecekMail)&lt;br \/&gt;\r\nKonu : @Html.TextBoxFor(model =&gt; model.Konu)&lt;br \/&gt;\r\nMesaj : @Html.TextAreaFor(model =&gt; model.Mesaj)&lt;br \/&gt;\r\nG\u00f6nderici : @Html.TextBoxFor(model =&gt; model.GondericiMail)&lt;br \/&gt;\r\n&lt;input type=&quot;submit&quot; value=&quot;Mail G\u00f6nder&quot; \/&gt;\r\n}\r\n<\/pre>\n<p>Biliyorum, tasar\u0131m\u0131m\u0131z pek bi halta benzemiyor.Ama bizim i\u00e7in \u015fimdilik \u00f6nemli olan tasar\u0131m de\u011fil, WebMail s\u0131n\u0131f\u0131d\u0131r.<\/p>\n<p>\u015eimdi &#8220;Mail(Controller).cs&#8221; Controller s\u0131n\u0131f\u0131m\u0131za gelip, &#8220;MailGonder&#8221; isminde bir Action metod olu\u015ftural\u0131m ve bu Action&#8217;\u0131m\u0131z\u0131n View dosyas\u0131n\u0131 da, Model Class&#8217;\u0131 &#8220;Mail&#8221; s\u0131n\u0131f\u0131 olarak ekleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class MailController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n\r\n        public ActionResult MailGonder()\r\n        {\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Ekledi\u011fimiz bu sayfalar\u0131n i\u015fleyi\u015finden bahsetmek gerekirse, &#8220;Index.cshtml&#8221; sayfam\u0131zda doldurulan veriler &#8220;MailGonder.cshtml&#8221; sayfam\u0131za nesne olarak aktar\u0131lacak ve bu nesnemizdeki veriler WebMail metodlar\u0131yla postalanacakt\u0131r.<\/p>\n<p>\u015eimdi &#8220;Mail(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131m\u0131za gelerek, &#8220;Index&#8221; isimli Action metodumuzun [HttpPost] Attribute&#8217;uyla i\u015faretlenmi\u015f overload&#8217;\u0131n\u0131 d\u00fczenleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;HttpPost]\r\n        public ActionResult Index(Mail mail)\r\n        {\r\n            HttpContext.Session.Add(&quot;Mail&quot;, mail);\r\n            return RedirectToAction(&quot;MailGonder&quot;);\r\n        }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, &#8220;Mail&#8221; isminde bir Session olu\u015fturuluyor ve Post sonucu verilerle doldurulan mail nesnesi bu Session&#8217;a at\u0131l\u0131yor ve &#8220;MailGonder&#8221; sayfas\u0131na y\u00f6nlendiriliyor.\u015eimdi &#8220;MailGonder.cshtml&#8221; sayfam\u0131za gelerek WebMail metodlar\u0131n\u0131n kullan\u0131m\u0131n\u0131 g\u00f6relim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  @model MvcApplication12.Models.Mail\r\n@using MvcApplication12.Models\r\n\r\n@{\r\n    Mail mail = Session&#x5B;&quot;Mail&quot;] as Mail;\r\n    if (mail != null)\r\n    {\r\n        WebMail.SmtpServer = &quot;smtp.gmail.com&quot;;\r\n        WebMail.UserName = mail.KullaniciAdi;\r\n        WebMail.Password = mail.Sifre;\r\n        WebMail.EnableSsl = true;\r\n        WebMail.SmtpPort = 587;\r\n        WebMail.Send(mail.GonderilecekMail, &quot;Konu&quot;, mail.Mesaj, mail.GondericiMail);\r\n    }\r\n}\r\n<\/pre>\n<p>Burada da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Session&#8217;da bulunan Mail nesnesini al\u0131p WebMail metodlar\u0131n\u0131n gerekli alanlar\u0131na verileri at\u0131yoruz.<\/p>\n<p>E\u011fer &#8220;localhost:****\/Mail\/Index&#8221; linkinde gerekli yerler doldurulup, buton tetiklenirse, mail g\u00f6nderim i\u015flemi ba\u015far\u0131yla ger\u00e7ekle\u015ftirilmi\u015f olacakt\u0131r.<\/p>\n<p>WebMail s\u0131n\u0131f\u0131n\u0131n &#8220;.cshtml&#8221; sayfalar\u0131nda nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 az \u00e7ok \u00f6rnekle izah etmi\u015f olduk.Son olarak bu s\u0131n\u0131f\u0131n \u00f6zelliklerinden bahsederek noktay\u0131 koyal\u0131m.<br \/>\n<span style=\"color: #ff9900;\">SmtpServer<\/span>\u00a0= Mailin g\u00f6nderilece\u011fi SMTP adresi belirlenir.<\/p>\n<p><span style=\"color: #ff9900;\">UserName<\/span> = Maili \u00fczerinden g\u00f6nderece\u011fimiz mail adresinin kullan\u0131c\u0131 ad\u0131.<\/p>\n<p><span style=\"color: #ff9900;\">Password<\/span> = Maili \u00fczerinden g\u00f6nderece\u011fimiz mail adresinin \u015fifresi.<\/p>\n<p><span style=\"color: #ff9900;\">EnbaleSsl<\/span> = G\u00f6nderilecek mail de HTML taglar\u0131n\u0131n okunup okunmayaca\u011f\u0131 belirlenir.<\/p>\n<p><span style=\"color: #ff9900;\">SmtpPort<\/span> = Smtp port numaras\u0131.<\/p>\n<p><span style=\"color: #ff9900;\">Send<\/span> = Mail g\u00f6nderme metodu.<\/p>\n<p>Bu yaz\u0131m\u0131z\u0131nda sonuna gelmi\u015f bulunmaktay\u0131z.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar..<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bildi\u011finiz gibi C# programlama dilinde genellikle SMTP protokol\u00fcnden mail g\u00f6nderme i\u015flemlerini ger\u00e7ekle\u015ftiririz.Asp.NET MVC&#8217;de bizlere kolayl\u0131k olsun diye &#8220;System.Web.Helpers&#8221; k\u00fct\u00fcphanesinde &#8220;WebMail&#8221; s\u0131n\u0131f\u0131n\u0131 sunulmaktad\u0131r.Bu s\u0131n\u0131f\u0131n property ve metodlar\u0131n\u0131n, Asp.NET Web Form mimarisindeki &#8220;SmtpClient&#8221; ve &#8220;MailMessage&#8221; s\u0131n\u0131f\u0131nlar\u0131ndakilerden&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[345],"tags":[746,283,409],"class_list":["post-1590","post","type-post","status-publish","format-standard","hentry","category-mvc-4-0","tag-asp-net-mvc","tag-mvc","tag-webmail"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1590","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=1590"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1590\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1590"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}