mehmetduran.com - Paylaşmak Güzeldir...
Asp.net'te Jquery ve Ajax Kullanarak Email Gönderme
Bu yazımda Jquery ve Ajax kullanarak mail gönderme işlemini nasıl yapabileceğimizi göstermeye çalışacağım. Geçenlerde uğraştığım bir konuda mail gönderme işlemi gerekti ve bunu Ajax ile yapmak istedim. Bunun için de Asp.net uygulamamda Jquery'i ve Ajax metodunu kullandım. Mail göndermek için ise yapacağımız C# kodlamaları standart olan kodlar ve internette çok sık kullanılan kodlar. Bu kodları kullanarak Ajax ile mail gönderme işlemi yapacağız. Ayrıca bu işlemi yapmak için ister kendi mail sunucumuz için gereken ayarları isterseniz Gmail sunucusunun ayarları hakkında bilgi edinebilirsiniz. Bu işlemi Ajax ile yaparak önemli derecede hız kazanmış olacağız ve gereksiz postbacklerden kurtulacağız.

Anlatacağım örnekte sayfada yer alan bir adet textbox'tan değeri alıp bu değeri mailin içeriği olarak istediğimiz bir adrese mail atacağız. Bunun için sayfamızın html kodlaması şu şekilde olacak.

<head>
    <script src="jquery-1.2.6.pack.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function(){
            $("#gonder").click(function(){
                var icerik = $("#textbox").val();
                $.ajax({
                    type: "POST",
                    url: "mail.aspx/mail_gonder",
                    data: "{icerik:'"+icerik+"'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(){
                        alert("Mailiniz başarıyla gönderildi.");
                    },
                    error: function(msg){
                        alert("Mail göndermede hata oluştu.");
                    }
                });
            });
        });
    </script>
</head>
<body>
    <input id="textbox" type="text" />
    <input id="gonder" type="button" value="Gönder" />
</body>

Mail göndermek için istekte bulunacağımız webmethodumuz ve kodları ise şu şekilde olacak. Kodlamalar öncesi System.Net.Mail kütüphanesini kodlama yapacağımız bölüme eklemeliyiz.

    [System.Web.Services.WebMethod]
    public static void mail_gonder(string icerik)
    {
      SmtpClient sc_mail = new SmtpClient();
      //mail sunucumuzun bilgileri
      sc_mail.Host = "mail.mehmetduran.com";
      sc_mail.Port = 25;
      sc_mail.Credentials = new System.Net.NetworkCredential("info@mehmetduran.com", "mail_sifresi");
 
      //gmail kullanarak mail gönderme
      //sc_mail.Host = "smtp.gmail.com";
      //sc_mail.Port = 587;
      //sc_mail.Credentials = new System.Net.NetworkCredential("mail_hesabi@gmail.com", "mail_sifresi");
      //sc_mail.EnableSsl = true;
 
      MailMessage mesaj = new MailMessage();
      MailAddress fromAddress = new MailAddress("info@mehmetduran.com"); //mailin hangi adresten geldiği
      mesaj.From = fromAddress;
      mesaj.To.Add("mehmetduran4@gmail.com"); //mail gönderilecek adres
      mesaj.Subject = "Mail Konusu";
      mesaj.IsBodyHtml = true;
      mesaj.Body = icerik;
      sc_mail.Send(mesaj);
    }

Kodlarda hem normal bir mail sunucusunu kullanmak hem de Gmail sunucusunu kullanmak için yapmamız gereken ayarları gösterdim. Kodlamalar tüm bilgiler doğru bir şekilde girilmiş ise doğru bir biçimde çalışmaktadır.

Mail göndermede hata oluşur ise Ajax isteği ile bunu yakalayıp kullanıcıya mesaj verebiliriz. Bunun için C# kodlarımızda bu kontrolü yapmamıza gerek yok. Jquery kodlarımızda bu kontrolü görebilirsiniz. Ayrıca textbox'tan alınan değerin kontrolünü de iyi yapmamız gerekir. (Örneğin ' kontrolü yapmamız gerekiyor.) Aksi halde hata alabiliriz veya yaptığımız uygulama tam olarak doğru çalışmayabilir.

Bu şekilde bir uygulamayı sitelerimizin ziyaretçi defteri bölümünde, yaptığımız uygulamalarda mail göndermek için kullanabiliriz. Bu olayı Ajax ile hazırlamamız daha önce de söylediğim gibi performans kazandıracaktır ve gereksiz postbacklerden kurtaracaktır.

İyi Çalışmalar.
Mehmet Duran 05 Mayıs Salı 2009 22 33870 4,6
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net ve Jquery Ajax ile Dizindeki Dosya ve Klasörleri Listeleme jQuery Ajax ile Dropdown Etkileşimleri (Eklenti ile) Web Service ile Ajax İşlemleri Jquery ile Tab Uygulaması Hazırlama Jquery ile Haber Manşet Alan Yapımı (Manşet Uygulamam)
Yorumlar
Yorum Yaz
RSS Yorum Takibi
serkan 04 Haziran Perşembe 2009 14:52 #1
yapmış olduğun mail göndermenin sende bi örneği warmı verebileceğin ?
Mehmet Duran 04 Haziran Perşembe 2009 14:54 #2
Örnek olarak verebileceğim bir dosya şu anda yok. Ancak kullandığım bir yer var. Ancak yazmış olduğum kodları olduğu gibi kullanabilirsin. Sorunsuz çalışmaktadır.
serkan 07 Haziran Pazar 2009 19:49 #3
kodlar için teşekkür ederim mehmet ama kodlarını kulllanırken sürekli hata alyorum acaba bi sıkıntımı war ondan istedim elimde hazırlanmış hali warmı diye ... lazım`da
Mehmet Duran 07 Haziran Pazar 2009 19:58 #4
Merhaba. Şu anda bir yerde aynı kodları kullanmaktayım. Kodlar sorunsuzca çalışmakta. Hata mail sunucusu ayarlarından kaynaklanabilir. Oluşan hatayı söylersen yardımcı olmaya çalışırım. Ayrıca sınavlarım bittikten sonra ajax.mehmetduran.com`a bununla ilgili örneği koyacağım.
Muhammed Ali 09 Haziran Salı 2009 11:44 #5
Merhabalar... bende asp kodlama bir site var. bir mail gönderme alanım var oraya bunu eklemek istiyorum müsadenizle. bunu yapmam için üstteki kodu sayfaya gömdükten sonra alttaki ile tam olarak ne yapmalıyım? "jquery-1.2.6.pack.js" şeklinde bir dosya mı oluşturmalıyım? birde ek olarak buna en azından isim ve mail eklemek istersek ne yapılmalı... kolaylıklar...
Mehmet Duran 09 Haziran Salı 2009 22:24 #6
Merhaba. Yukarıda vermiş olduğum ilk kodlar script kodlar ve aynen kullanabilirsin. Alt taraftaki kodlar ise c# kodlarımız ve server tarafında çalışacak olan kodlar. Eğer asp.net ile yapıyorsan bu kodları da aynen kullanabilirsin. Klasik asp diyorsan da ona göre kodlarını oluşturmalısın. Ancak klasik asp ile ajax işlemleri hakkında pek bilgim yok. Yeni alanlar için ise script kodlarında yeni alanların değerini almalı ve data olarak server tarafına göndermelisin.
fatih uzun 04 Temmuz Cumartesi 2009 21:39 #7
su kadar duru bir o kadar güzel ve faydalı bir sunum yapmışsın. teşekkür ederim.
D.Alpaslan 18 Eylül Cuma 2009 14:15 #8
Öncelikle elinize sağlık, gayet güzel bir çalışma bende bu scripti kullandım çalışma sırasında localhost ta gayet güzel çalıştı, sayfayı servar a attığım zaman script çalışmıyor. Bu konu ile ilgili bir biliniz var mıdır ?
Mehmet Duran 18 Eylül Cuma 2009 20:12 #9
Merhaba. Sunucuda şu an kullanıyorum ve bir problem yok. Çalışmama nedenini bilmek çözümü bulmak için gerekli. Aldığın hata nedir? Eğer adres verebilirsen bir de ben bakabilirim.
Serdar Durbarış 02 Kasım Pazartesi 2009 01:36 #10
üstad belki alakasız olacak ama kusuruma bakma repeater kontrolü ile akordiyon sistemde db den veri çekiyorum ve bir alanada ürün hakkında mail göndermeleri için bir form oluşturdum. formu normalde kullanıyorum akordiyon menü içerisinde fakat repeater ın altında itemtemplate e eklediğimde string adi = ad.Text; string mailX = mail.Text; string mesaji = mesaj.Text; alanlarında *.Text kısımlarında The name "ad" does not exits in the current con text şeklinde bir hata ibaresi çıkıyor.
Mehmet Duran 02 Kasım Pazartesi 2009 20:21 #11
Eğer kullandığın kontrol repeater içinde ise o şekilde direk erişim yapamazsın. FindControl metodu ile yapabilirsin veya hiç kontrol kullanmadan direk olarak public bir değişkene değeri atıp o değişken değerini repeater içinde yazdırabilirsin.
hakan 08 Aralık Salı 2009 10:38 #12
merhaba jquery ajax uygulaması asp.net 2.0 ile neden çalışmıyor anlamadım. aynısını 3.5 ile denedim ve sorun yok. çok ilginç bir durum gerçekten.
Mehmet Duran 08 Aralık Salı 2009 17:23 #13
.Net 2.0 (VS 2005 üzerinde) ile ben de çalıştıramamıştım ama nedenini araştırmadım. 3.5 ile sorunsuzca çalışmakta ve 3.5 kullanmaktayım. Ancak 2.0 ile çalıştığını söyleyen arkadaşlar vardı. Sanırım VS 2008'de açılan 2.0 projesinde çalışmakta. Çalışmama sebebi service pack eksikliği olabilir. Ancak her zaman en son versiyonu kullanmak her bakımdan daha iyi.
Mehmet ÇOKTAY 01 Ocak Cuma 2010 17:57 #14
hocam ben bunun benzerini yaptım.postback tarzı ile çalışıyor.ancak beklediğim performansı alamadım.beklemeler oluyor.sizin yaptığınız ajax tarzı.acaba örnek proje dosyasını görme şansımız varmı.örnek projeyi yüklerseniz sevinirim.iyi çalışmalar
Mehmet Duran 01 Ocak Cuma 2010 18:41 #15
Bu örnekte proje yok. Kodlar direk olarak çalışan kodlar. Bu kodları herhangi bir sayfaya kopyala yapıştır ile alıp deneyebilirsin. Sitemin yönetim bölümünde aynen bu şekilde kullanıyorum. Kodlar tamamen aynı.
localde calısıp 08 Şubat Pazartesi 2010 01:00 #16
localde çalışıp da hosta neden çalışmayabilir ayarlardan kaynaklanıyor sanırım ,ama bu kısıtlamaları kodla aşılabilir mi ,bilginiz var mı kolay gelsin
Mehmet Duran 08 Şubat Pazartesi 2010 20:03 #17
Sunucuda neden çalışmadığını bulmak lazım. Bunun için de hatanın nedenini görmek lazım. Firefox'un Firebug eklentisi ile Ajax isteğinin sonucu (doğru veya yanlış) görülebilir. Hata veriyorsa da neden hata verdiği görülebilir.
Mustafa 17 Haziran Perşembe 2010 12:43 #18
Evet kodlar tamm çalışıyo olabilir Mehmet Bey ama kodlardaki jquery-1.2.6.pack.js dosyasını bulmadan nasıl çalışacakki orda js dosyasını bulup projeye dahil etmemiz gerekmiyo mu?
Mehmet Duran 17 Haziran Perşembe 2010 13:34 #19
Merhaba. Söylediğin doğru ama neden bu soruyu sorduğunu anlamadım. Söylediğin script kütüphanesini jquery.com veya google'ın sağladığı servislerden elde edebilirsin. Bu dosyayı da kullanmak istediğin sayfaya ekleyeceksin. Böylece bu ve bunun gibi örnekler sorunsuz çalışır.
Erhan 18 Temmuz Pazar 2010 21:18 #20
Teşekkürler Mehmet, .SendAsync() metodunu kullanıyordum ama işe yaramıyordu. .Send() metodunu hiç farketmemişim sağolasın :)
imran 17 Şubat Perşembe 2011 11:44 #21
Mehmet Bey merhaba, Asp.nette geliştiridiğim bir web uygulamasında sistem tarihine göre otomatik mail göndermem gerekiyor. Bunu nasıl yapabilirim.
Mehmet Duran 08 Nisan Cuma 2011 22:13 #22
#imran, bunun için zamanlayıcı görevler veya veritabanlarının job servislerini kullanabilirsin. Ancak her ikisi için de sunucuda yetkili olman gerekir.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Büyük işler gibi, büyük düşüncelerinde davula ihtiyaçları yoktur.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009