mehmetduran.com - Paylaşmak Güzeldir...
Kullandığım Email Sınıfı (Çoklu Mail ve Dosya Gönderimi)
Bu yazımda bloğumda kullandığım, çoklu mail ve dosya gönderimi yapabildiğim Email sınıfını paylaşıyorum. Maillerimi özellikle bloğuma gelen soruları cevaplamak için yazmış olduğum bu sınıfı kullanıyorum. Yazımın devamında ekran görüntüsünü de sizlerle paylaşacağım. Oldukça faydalı bir çalışma olduğunu düşünüyorum. Yine projelerimize direk olarak ekleyip kullanabileceğimiz bir sınıf. Birden fazla kişiye mail atabiliyor ve istediğimiz kadar da dosya gönderebiliyoruz. Şimdi bu sınıfa ve nasıl kullancağımıza bakalım.

Öncelikle yazmış olduğum sınıfı buradan görebilir ve indirebilirsiniz. Örnek kod olarak MVC'de yazmış olduğum kodları paylaşacağım. Asp.net ile de kodların kullanımı aynı. Ancak kodları aynen kullanabilmek için burada yazmış olduğum yazıda form yapısını ve dosya nesnelerini oluşturma yöntemini kullanabiliriz. MVC ile kullanım şöyle.

    [AcceptVerbs(HttpVerbs.Post)]
    [ValidateInput(false)]
    public ActionResult Mail(string MailBaslik, string MailIcerik, string MailAdres)
    {
      List<Attachment> dosyalar = new List<Attachment>();
      foreach (string isim in Request.Files)
      {
        var file = Request.Files[isim];
        dosyalar.Add(new Attachment(file.InputStream, file.FileName) { });
      }
      Mail m = new Mail(
        "smtp.live.com", 
        587, 
        "mail_hesap_adi@hotmail.com", 
        "mail_sifre", 
        "mail_gonderen@hotmail.com", 
        "Bu email mehmetduran.com'dan gönderilmiştir.", 
        true
        );
      m.Gonder(
        new List<string>() { MailAdres }, 
        MailBaslik, 
        MailIcerik, 
        dosyalar);
      return View();
    }

Bu şekilde yazdığımız sınıfı kullanarak istediğimiz sayıda kişiye istediğimiz kadar dosyayı (mail sunucusunun kotasını aşmamak koşuluyla) istediğimiz mail sunucusu ile gönderebiliyoruz. Şimdiye dek hem dosyalı hem de dosyasız birçok mail gönderimi yaptım ve bir sorun yaşamadım. Sitemde kullandığım email formunun görüntüsü ise aşağıdaki gibi.

Kullandığım Email Sınıfı (Çoklu Mail ve Dosya Gönderimi)

Mail göndermek için mail adreslerini, mail başlığını ve mail içeriğini sayfadaki kontrollerden alıyorum. Mail içeriği için FCK editör kullanıyorum ve içerik için oldukça esneklik sağlıyor. Dosya gönderimi için ise jQuery kullanarak dosya nesneleri oluşturuyorum ve bu nesnelerden seçtiğim dosyaları alıyorum. (jQuery ile dosya nesnesi oluşturmayı buradaki yazımda bulabilirsiniz.) Tüm bu girdileri alıp yazdığım sınıfı kullanarak maili gönderiyorum.

Altta yer alan kısımda ise mail atarken kullanacağım ayarları tuttuğum ve düzeltebildiğim formu görüyorsunuz. Mail atarken kullanacağımız bilgileri veritabanında ya da herhangi bir belgede tutup, bu şekilde tamamen dinamik bir sistem oluşturabiliriz. Böylece istediğimiz mail sunucusunu, mail hesabını kullanabiliriz.

Şu anda bu sistemi kullanıyorum ve sorunsuzca maillerimi gönderebiliyorum. Özellikle siteme gelen soruları cevaplamak için bu formu kullanıyorum. Umarım kullanmak isteyenlere de faydalı olur.

Yazdığım sınıfı buradan görebilir ve indirebilirsiniz.

Ayrıca daha önce yazmış olduğum buradaki yazımda da mail gönderme ile ilgili kodlarımı görebilirsiniz.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net MVC ile İlgili Birkaç Bilgi ActionScript for Designers Learning Asp.net 3.5 (E-Book) alperocalan.com | Hasan Alper Öcalan - Site Tanıtımı Asp.net MVC'de View ve MasterPage için CodeBehind Tanımlama
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Kayhan 18 Eylül Cuma 2009 04:16 #1
Hocam elinize sağlık, çok aydınlatıcısınız. Kodlarınızı böyle cömertce paylaşmanızı takdire değer.
Computer 18 Eylül Cuma 2009 18:45 #2
Çok teşekkürler paylaşım için. Sitedeki bilgilerde çok yararlı. Özellikle bu mail gönderimi ile ilgili paylaşım güzel ve aydınlatıcı olmuş. Fakat birşey dikkatimi çekti. Yazdığın e-posta sisteminin ekran görüntüsünü vermişsin, "mail gönder, mail adresleri, mail içerik, mail sunucu" ifadeleri yerine, türkçe olarak "posta gönder, posta sunucusu, e-posta içerik" vs.. gibi, Türkçe sözcükler kullanmış olsan kendi adıma çok daha estetik görünüme sahip olacağı görüşündeyim.. Çalışmalarında başarılar..
Mehmet Duran 18 Eylül Cuma 2009 20:20 #3
@Kayhan, yorumun için teşekkür ederim.

@Computer, Senin yorumun için de teşekkür ederim. Türkçe konusunda dikkatli olmaya çalışıyorum. Ancak "mail" sözcüğünün evrensel bir kelime olduğunu ve kullanmakta bir sorun olacağını en azından Türkçe için bir problem olacağını düşünmüyorum. Ancak yine de dediğin gibi bir kullanım iyi olurdu.
Computer 19 Eylül Cumartesi 2009 13:49 #4
Teşekkür ederim cevabın için.Gerçekten paylaşımların takdire değer, eline sağlık her paylaşımın için. Yalnız, "mail" kelimesinin evrenselden ziyade kullanımı yaygın diye düşünmekteyim. Türkçe sözcük kullanımı, daha estetiklik katar programa diye düşünüyorum. Biraz ingilizce (evrensel dahi olsa), biraz Türkçe çok şık kalmıyor. Özellikle, Microsoft'un Türkçe programlarında, tamamen Türkçe ifadeler kullanması bu estetiği ortaya koyuyor. Umarım beni yanlış anlamıyorsundur (: Amacım paylaşım sadece..
Mehmet Duran 19 Eylül Cumartesi 2009 23:47 #5
Yanlış anlayacak bir durum yok. Sana hak veriyorum. Bundan sonra Türkçe'ye olan dikkatim daha fazla olur. Ancak bana göre "mail" kelimesinin yaygın olarak kullanılması onun evrensel olduğunu gösterir.
Kursad 05 Ekim Pazartesi 2009 15:21 #6
Merhabalar..Burada tam olarak anlayamadıgım bişey var..kullanıcı adı ve şifremizi girdikten sonra bir de Gonderen Mail bilgisi veriyoruz.Bu tam olarak ne işe yarıyor..Cünkü gönderilen mailler zaten mail sunucumuza ait kullanıcı adımızla gidiyor..Boyle olmuyorsa ben bir yeri kacırıyorum onu öğrenmek istiyorum..İyi çalışmalar
Mehmet Duran 05 Ekim Pazartesi 2009 21:01 #7
Daha önce bu şekilde gönderen maili yazdığımızda mailin gönderilen bölümünde belirttiğimiz adres çıkıyordu. Ancak spamları engellemek amacıyla alınan önlem sonucu (böyle düşünüyorum) dediğin gibi sunucudaki kullanıcı hesabımız çıkıyor. Ancak daha önce belirttiğimiz adres çıkmaktaydı.
mustafa burak 08 Nisan Perşembe 2010 23:32 #8
Yeri burasımı bilmiyorum ama mail görünce sormak istedim.asp.net ile mail aktivasyon nasıl yapılıyor? Yani sitemize bir kişi üye oldu ve veritabanımızda aktivasyon durumu false.ve diyelim ki ben o kişiye mail içerisinde bir link gönderdim.Bu linke tıklarsa aktivasyon true olacak.Öncelikle bu yol doğru mu? duğruysa nasıl bir link göndermeliyim ve tıklanıp tıklanılmadığını nasıl kontrol edebilirim?(küçük bir kod ya da bir makale önerirseniz cok güzel olur)yanlışsa doğru yol nasıl olmalı?saygılar.
Mehmet Duran 08 Nisan Perşembe 2010 23:52 #9
Bunun için düşündüklerin doğru. Ancak böyle bir sistem için çeşitli yöntemler kullanılabilir. Söylemiş olduğun yöntemde ise aktivasyon için link üzerinde hangi kayıt üzerinde işlem yapacaksan bu kayıt hakkında bir bilgi olmalı. Bu bilgi muhakkak olmalıdır. Bunun yanında güvenlik ile ilgili sorunlar olmaması adına birkaç veri daha ekleyebilirsin. Ayrıca yine güvenlik adına link üzerinde işlem yaptığın verileri de çeşitli şifreleme algoritmalarından geçirebilirsin. Sonuçta verilen link oluşturulan sistem üzerinde bir link olacak. En basit olarak bu linkteki sayfanın kod kısmında url'den gelen verileri işleyerek veritabanında gerekli işlemler yapılır ve yine kullanıcıya bilgilendirme maili atılır. Ancak tüm adımlarda güvenlik tedbirlerini iyi süzmek gerekir.
mustafa burak 09 Nisan Cuma 2010 00:01 #10
peki ben karşı tarafın linke tıklayıp tıklamadığını nasıl kontrol edebilirim?yani o linke tıkladığında benim siteme nasıl cevap döndürebilirim?(cevap geldikten sonra aktivasyonu true yapmak kolay) yani geri döndürebilecek linki nasıl yazmalıyım? ya başkaları nasıl yapıyo bu işlemi anlamıyorum hiçbir yerde bunla ilgili tek bir makale bile bulamadım:( büyük siteler kullanıcı ismi yerine email girişi yaptırıyorlar.ben de gerçek kişilere ulaşmak için bu işlemi yapmak istiyorum.
Mehmet Duran 09 Nisan Cuma 2010 00:26 #11
Yorumumda belirmiştim ama daha iyi ifade etmem gerek sanırım. Emailde gönderilecek link http://SiteAdi.com/SayfaAdi?Veriler=... gibi bir yapıda olacak. Burada SayfaAdi ile belirtilen sayfa kendi kodlarınla oluşturacağın bir sayfa ve emailde giden bu linke tıklandığında bu sayfa çalışacaktır yani sayfa ile beraber arka planda istediğin kodda çalışacaktır. Burada url'den alacağın verileri işleyerek veritabanında aktivasyon işlemini yapabilirsin.
Mehmet 12 Haziran Cumartesi 2010 16:20 #12
örneğiniz çok güzel.acaba FCK editör kullanımını ve visual studio ya nasıl entegre edildiğine dair bir örnek yapabilirmisiniz.yada bu yaptığınız örneğin proje dosyasını paylaşabilirmisiniz.FCK editör ile acces bağlantısı yapmak istiyorum.bu konuda yardımcı olursanız teşekkür ederim.iyi çalışmalar
Mehmet Duran 13 Haziran Pazar 2010 00:24 #13
Merhaba. Daha önce bu konuda yazım olmuştu. Editörü .Net projelerinde Dll ekleyrek veya hiçbirşey eklemeden direk script kütüphanesi ile kullanabiliyorsun. Ayrıca ediötrün Access ile bağlantısı söz konusu değil. Burada iyi ayırt etmek lazım. Yapılacak iş veritabanından veriyi alıp editöre yüklemek ve/veya editörden değeri almak olacaktır. Sitemde FCK ile ilgili yazılar mevcuttur.
sedat 11 Ağustos Çarşamba 2010 15:10 #14
100.000 civarı kişiye toplu olarak mail göndermeye çalıştıgınızda timeout hatası almanız muhtemel olucaktır bu sorunu thread ilemi çözüyorsunuz (çözüyorsanız nasıl) veya farklı bir yöntem mi kullanıyorsunuz. iyi çalışmalar.
Mehmet Duran 11 Ağustos Çarşamba 2010 17:00 #15
Söylemiş olduğun gibi büyük sayıdaki kullanıcıya email atmaya kalktığımızda mail sunucusu gelen isteği karşılamayacaktır. Bu sorunu engellemek için birçok yöntem kullanılabilir. Bana en mantıklı geleni ise kullanıcı sayısını küçük birimlere bölüp (5'şer, 10'ar, vb.) bu birimlere belirli süre aralıklarında email göndermek dahah mantıklı olacaktır. Süre ayarlamasını thread ile veya zamanlanmış görevler ile yapmak mümkün.
altugfb 27 Ocak Perşembe 2011 16:33 #16
merhaba paylaşımınız için teşekkürler...benim bir sorum olacak; - çoklu mail gönderdiğimde, maili alan kişi mailin gittiği tüm adresleri de görebiliyor.(Kime bölümünde) bunu nasıl engelleyebiliriz.bildiğiniz bir yöntem var mı? iyi çalışmalar
Mehmet Duran 04 Şubat Cuma 2011 16:03 #17
@altufb, bunun için mail nesnesine kişi eklerken bcc.add gibi özellikler var. Onları kullanırsan adres bölümünde herkes adresleri göremez.
Ali 11 Şubat Cuma 2011 12:03 #18
Ben tam olarak anlamadım.asp.net de site yapmaya yen ibaşlayan biri için karmaşık.form tarafını oluşturduktan sonra nasıl bir yol izlemeliyim.bu kodları asp.nete kopyalayıp yapıştırdım.Ancak çalışmadı.Yardımcı olursanız sevinirim.
lilu 07 Mart Pazartesi 2011 16:50 #19
merhaba bu uygulamanin tamamini siteye koyabilir misiniz lutfen;kodlari uygulayinca hata verdide bende...
Mehmet Duran 08 Nisan Cuma 2011 22:07 #20
@Ali, burada vermiş olduğum kodlar MVC projesi altında yazdığım kodlar. Buradaki mantığı anlarsan webform projesinde bu kodları buton veya başka bir kontrolün click eventı veya başka bir eventı ile kodları çalıştırabilirsin.
Mehmet Duran 08 Nisan Cuma 2011 22:38 #21
@lilu, kodları paylaştım zaten. Yapman gereken gerekli değerleri verip, fonksiyonları çağırmak olacaktır.
İ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.
Ne edersen kendine, edersin kendi kendine.
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