MVC 5 ile İletişim-Mail Formunun Tanımlanması ve Çalıştırılması


April 2019 (0) Iptv 12/21/2024


Bu adımımızda İletişim sayfamızdaki formu MVC 5 ile çalışır hâle getireceğiz. Bu makalenin ardından hem model hem de Controller eklemenin ne kadar kolay olduğunu anlayacaksınız. Şimdi ayrıntılı olarak hazırlanmış bu makaleyi uygulamaya başlayalım.

MVC'in açılımı Model-View-Controller'dır. Bugüne kadar sadece View'lerle ve Controller'larla web sitesi projemizi geliştirdik. Bu adımda ise Model'leri kullanacağız.

I. Aşama - Modellerin Eklenmesi

Models klasörüne sağ tıklayın ve Add > Class... yolunu izleyin.


Mail isimli bir sınıf ekleyin.

Mail sınıfı bu şekilde açılacaktır.

public class Mail kısmına aşağıdaki kodları ekleyin.

public static class Mail
{
    public static void SendMail(string body)
    {
        var fromAddress = new MailAddress("[email protected]", "Leaf Solutions Geribildirim");
        var toAddress = new MailAddress("[email protected]");
        const string subject = "Leaf Solutions Geribildirim";
        using (var smtp = new SmtpClient
                       {
                           Host = "smtp.gmail.com",
                           Port = 587,
                           EnableSsl = true,
                           DeliveryMethod = SmtpDeliveryMethod.Network,
                           UseDefaultCredentials = false,
                           Credentials = new NetworkCredential(fromAddress.Address, "trololol")
                           //trololol kısmı e-posta adresinin şifresi
                       })
        {
            using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body })
            {
                smtp.Send(message);
            }
        }
    }
}

Değiştirme işlemini bu şekilde tamamlamış olmalısınız. Açık kırmızı alanların üzerine bir kez tıklayın ve mavi kutucukları seçerek using'lerini ekleyin.

using'leri ekledikten sonra kodlarınız aşağıdaki gibi görünecektir.

e-Posta adresini kendiniz belirleyiniz ve şifresini ise e-posta adresinizin şifresi olarak değiştiriniz. "Mail bildirim sebebi" kısmı e-postaya gelecek konu başlığı olacaktır. Burayı da değiştirebilirsiniz.

Burada yaptığımız işlem kendi kendimize e-posta göndermek. Bu şekilde spam ve hız sorunlarından kurtulmuş oluyoruz. Ayrıca e-posta ve şifrenizi siteniz yayındayken kimse göremez. İçiniz rahat olsun. Sadece proje dosyanıza sahip kişiler görebilir.


Models klasörünün içine Mail'i eklediğiniz gibi iletisimModel adlı bir sınıf daha ekleyin.

public class IletisimModel
{
    public string NickName { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string Message { get; set; }
}    

public class IletisimModel yerine kopyaladığınız kodları yapıştırın. Aşağıdaki gibi bir görünüm elde edeceksiniz.


Eğer başka bir projede çalışıyorsanız burada dikkat etmeniz gereken nokta get ~ set isimleri ile HTML sayfanızdaki name atıflarının aynı olması.


II. Aşama - Controller Düzenlemesi

Şimdi Controller'da düzenleme yapacağız. Controllers klasöründeki İletişim sayfanıza ait iletisimController'ına tıklayın ve açın.

Aşağıdaki kodları kopyalayın.
 [HttpPost]
public ActionResult Index(IletisimModel model)
{
    if (ModelState.IsValid)
    {
        var body = new StringBuilder();
        body.AppendLine("Rumuz: " + model.NickName);
        body.AppendLine("İsim: " + model.FullName);
        body.AppendLine("Tel: " + model.Phone);
        body.AppendLine("Eposta: " + model.Email);
        body.AppendLine("Konu: " + model.Message);
        Gmail.SendMail(body.ToString());
        ViewBag.Success = true;
    }
    return View();
}        


public ActionResult Index()'in altına kopyaladığınız kodları yapıştırın ve açık kırmızı görünen alanların üzerine bir kez tıklayın ve daha önce yaptığınız gibi mavi kutucuklar yardımı ile using'lerini ekleyin.

Kırmızı alanlar bu şekilde kaybolacak ve using'ler sayfanın başına eklenecektir. Burada Rumuz, İsim ... gibi alanları değiştirebilirsiniz. Bu kısım e-postanıza gelen mesajlarda başlık olarak görünecektir. Dikkat etmeniz gereken nokta NickName, Fullname ... gibi alanların HTML sayfanızdaki name atıfları ile aynı olması. Eğer daha sonraki projelerinizde ekleme - çıkarma yapacaksanız bu kısımda ve öncesinde iletisimModel'indeki get ~ set'lerde yapmalısınız.

III. Aşama - View Sayfasının Düzenlenmesi

Views klasöründeki İletişim sayfasını açın. 


Şimdi aşağıdaki kodları ekleyin


@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "contact-form", action = "/iletisim" }))
{
if (ViewBag.Success != null && ViewBag.Success)
{
<div id="wrapper">
<div id="message-sent">
<div id="close-button">
<span >X</ span >
</div>
<span>Mesajınız başarıyla gönderilmiştir.</span>
</div>
</div>
}
}

<form> etiketi üzerine kopyaladığınız kodları yapıştırın. Görselde gördüğünüz gibi form kapatma etiketi (</form>) yerine kopyaladığınız kodlardaki son köşeli parantezi kesin ve yapıştırın.

Buradaki contact-form ID'si, formun container'ı niteliğinde. Bunu using ile kullanmak yerine dilerseniz formu kapsayacak şekilde <div id="contact-form">...</div> şeklinde de kullanabilirsiniz.

action ise mesaj gönderildikten sonra açılacak sayfadır.

Gönderme işlemi başarılı olunca ise ViewBag.Success kısmı çalışacaktır.

Not: Eğer bu projede çalışıyorsanız sayfanın sonundaki yukarıda gördüğünüz gereksiz JavaScript kodlarını silebilirsiniz.

document.getElementById("contact-form").submit();
alert("Bu bildirimi onayladiktan sonra mesajiniz gonderilecektir. Sizinle en kisa sürede iletisime gececegimize emin olabilirsiniz.");

Bunun yerine jQuery kodlarını eklemelisiniz.









  

"Mesaj gönderildi" kısmının CSS kodları ise bu şekilde.

#wrapper {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(0, 0, 0, .5);
    z-index: 9999;
}
#message-sent {
    width: 340px;
    height: 60px;
    line-height: 60px;
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -30px;
    margin-left: -170px;
    font-weight: 600;
    border-radius: 0 16px;
    color: #191970;
    background: white;
    box-shadow: 0 0 20px 4px #0d6636;
}
#close-button {
    width: 18px;
    height: 18px;
    line-height: 18px;
    text-align: center;
    position: absolute;
    top: -8px;
    right: -8px;
    background: white;
    border-radius: 0 8px;
    border: 1px solid #0d6636;
    cursor: pointer;
    font-weight: 600;
}       


Yorum yapabilmek için giriş yapınız

Giriş Yap

Sitede Ara

En Çok Okunanlar

Android Cihazlara POP3 E-Posta Hesabı Kurulumu (1773)
Windows simgelerinde beyaz ikon sorunu ve çözümü (1362)
SQL REPLACE() Kullanımı (909)
Yerel Ağ Bağlantısına girmek istediğimde ''Bağlantı özelliklerine erişmek için yeterli yetkiniz yok.Yöneticinize başvurun'' uyarısı.. (529)
Access violation at address 0518fde4 inmodule NETINFO.dll Read of adress 00000000 (472)
CMD komutları ile Windows Aktivasyonu (381)
PatchCleaner v1.4.2.0 indir Windows Installer Temizleme Programı (373)
Bedava Netflix Hesapları 2022 (Ücretsiz Premium Hesaplar) (370)
MailEnable Webmail Unknown or Disabled User Hatası (362)
Server communication failure. Please refresh your browser and try again. (342)
Turbobit Premium Hesaplar Bedava Güncel Üyelikler 2022 (337)
There is already an object named in the database Cozum (334)
Turbobit Premium Hesaplar Güncel Liste 2022 (327)
Windows 10 Gereksiz Servislerin Kapatılması - Resimli Anlatım (309)
Yazıcı hata kodu 0x0000011b sorun ve cozumu (306)
Windows Bileşen Deposu (WinSxS) Klasörünü Temizleme (293)
Adobe After Effects CC 2019 Full İndir – v16.1.1.4 (245)
Linq ile inner Join Kullanımı (243)
ASP.NET MVC Email Doğrulama Sayfası (Verification) (238)
Dinozor Nesline Son Veren Silen Asteroit Felaketi, Nasıl Gerçekleşti? (228)
3 Adımda Server olay loglarının silinmesi (214)
Windows 10 durdurulabilecek hizmetler (206)
Bedava Turbobit Premium Hesap 2022 (%100 Güncel Hesaplar) (196)
Visual Studio 2017 Dil Ekleme/Değiştirme (191)
Windows Server Çoklu Oturum Açma Ayarı (175)

Son Yorumlar