MVC Asp.Net Tek Bir Class İle Mail Gönderme
Merhaba arkadaşlar bu konumuzda tek bir class yazacağız ve o class’ı her yerde kullanarak mail işlemlerini yapabilirsin ama ben mvc ile yazacağım controllerde kullanacağım.
N Katmanlı Mimari kullanarak yapacağız bir adet
Solition kısmında sağ tıklayıp add new project diyerek Class Librarimizi ekleyeceğiz.
Class Library .Net Framework olanı seçiyoruz ve Ok’a basıyoruz.
Daha sonra Bussines Katmanına New Item’a tıklayacağız.
Bir adet Class oluşturuyoruz ve ben adını mail yapmıştım ss alırken erken almışım siz istediğiniz ismi veriniz.
Classımı Açtım Kullanacağım parametreleri yazdım daha sonra smpt client falan mail araçlarını yazdım bunlar için kütüphane gerek alt + enter tuşuna basarak ekleyebiliriz. Daha sonra from bizim mail adresimiz server yani to da gidecek mail adresi body kısmıdan göndereceğimiz adamın mail adresini başına ekliyoruz networkcredential da mail adresi ve şifremizi yazıyoruz gmail kullandığımız mail şifre yani bu kadar alt kısımda kodları vereceğim.
Asp.net Mvc olan katmanda add reference tıklıyoruz Bu Arada Home Controllere email sender isımli Controler ekliyorum.
Katmanı Projeye ekliyoruz.
Bussines Katmanındaki email Classını çektim ve altı çizili kaldı alt enter yaparak projeme Bussines katmanını ekletiyorum.
Burada Email açmıştım Class içi olarak sonra default construckter açıp kısayolu ctor tab tab yaparak yazdırabilirsiniz sonra mail clasının instancesını aldık.
Email Sender Controlleri Post metoduna classta verdigim parametreleri veriyorum ve onları birazdan View’da yapacağız
Add view ekliyorum tasarım yapmam gerekiyor textboxlar’dan gelen verileri ekleyeceğim
Layout Page açıp Add’e bastım.
Begin form ile gideceğim Controller ve actionu yazıyorum ve metodu post olarak yazıyorum myform kısmı js olayı sizde olmasada olur hiç gerekyok ,new kısmından silmeniz gerek. burada verdiğim nameler controllerimdeki parametrelerle aynı direk oraya verileri gönderip post ediyorum.
Tasarım görünümü böyle
Controllerın son hali böyle bir viewbag ekledim ve ekleyince mail gönderildi diye sayfada çıkması için yazdım.
Son Olarak Kodlar Email Classı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <span style="color: #000000;"> public class mail { public void Mail(string sendMailAdress, string subject, string body) { SmtpClient client = new SmtpClient(); MailAddress from = new MailAddress("mailadresi@gmail.com"); MailAddress to = new MailAddress("info@teknohisar.com");//bizim mail adresi MailMessage msg = new MailMessage(from, to); msg.IsBodyHtml = true; msg.Subject = subject; msg.Body +="Gönderen Mail Adresi "+ to+" | <h1> " + body + " </h1>"; //burada başında gönderen kişinin mail adresi geliyor msg.CC.Add(sendMailAdress);//herkes görür NetworkCredential info = new NetworkCredential("mailadresi@gmail.com", "şifreniz"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; client.Credentials = info; client.Send(msg); } }</span> |
Controller İçindeki Kodlar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <span style="color: #000000;"> mail email; public HomeController() { email = new mail(); } [HttpGet] public ActionResult EMailSender() { return View(); } [HttpPost] public ActionResult EMailSender(string sendMailAdress, string subject, string body) { email.Mail(sendMailAdress, subject, body); ViewBag.Kontrol = "Başarı İle Mail Gönderildi"; return View(); }</span> |
View Kodları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <span style="color: #000000;">@{ ViewBag.Title = "EMailSender"; } <h2>EMailSender</h2> <div class="container"> @if (ViewBag.Kontrol != null) { <h3 class="text-warning">@ViewBag.Kontrol</h3> } <div class="col-lg-5" ng-app=""> @using (Html.BeginForm("EMailSender", "Home", FormMethod.Post, new { @name = "myForm" })) { <div class="form-group"> <input type="text" class="form-control" name="sendMailAdress" placeholder="Email Adressi" /> </div> <div class="form-group"> <input type="text" class="form-control" name="subject" placeholder="subject" id="sifre" /> </div> <div class="form-group"> <textarea name="body" class="form-control" placeholder="Açıklama"></textarea> </div> <div class="form-group"> <input type="submit" class="form-control btn-success" value="Kayıt Ol" /> </div> } </div> </div> </span> |
Bir sonraki konuda görüşmek üzere sorunuz olursa çekinmeden sorabilirsiniz.
Ayrıca Gmail hesabınızın güvenligini biraz düşürmeniz gerekmekte onu yapmazsanız mail atamazsınız googleden bulup yapabilirsiniz
Gördüğüm en açıklayıcı yazı diyebilirim sanki 🙂 Eline sağlık çok teşekkür ederiz.
Rica ederim 🙂
Adamsın kardeşim
Gördüğüm en açıklayıcı yazı