Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ASP.NET
YAZAR HAKKINDA
Ethem Evlice
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
2
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
ASP.NET
Ethem Evlice
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Başlangıç
Kategori
:
ASP.NET
Yayınlanma Tarihi
:
6.8.2003
Okunma Sayısı
:
54766
Yorum Sayısı
:
7
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
4.12.2024
Turhal Temizer
Mac OS/X Removing CUDA
4.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
4.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
4.12.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
Ethem Evlice
/
ASP.NET
/
SMTP Server Kullanmadan E-mail Gonderme (.NET)
SMTP Server Kullanmadan E-mail Gonderme (.NET)
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Bilgisayarınızda kurulu olan mail server’ın çalışma mantığı hiç aklınıza geldi mi? Gelmediyse CDONTS örneğiyle açıklayalım:
Siz bir nesne oluşturursunuz ve bu nesneye e-maili göndermesini söylersiniz. Bu nesnenin yaptığı aslında birkaç dosya işleminden başka bir şey değildir. Önemli olan bundan sonrasıdır. Bu makalede anlatmak istediğimiz de bu işi kendimizin nasıl yapacağıdır. Bir emaili bilgisayarda kurulu olmayan bir mail server olmadan nasıl göndeririz?
Şimdi bir mail sunucusu(server)’nun çalışma mantığı nedir? İsterseniz bunu aşağıdaki grafik üzerinde açıklayalım.
Öncelikle mail sunucu istemciden email gönderme isteği geldiğinde bunu kabul eder.
Mail sunucu alicinin domain’ine ait MaileXchange kayıtlarını DNS sunucudan ister.
Dns sunucusu cevabını gönderirir.
Mail sunucu öğrenmiş olduğu MX kayıtlarına ait IP kayıtlarına bağlanır. Bu IP adresleri karşı sunucunun IP numaralarıdır.
Bağlantı kurulduktan sonra email isteği iletilir. Karşı taraf alıcı gerçekten varsa bunu kabul eder. Yoksa ya da kota aşımı gibi durumlar söz konusuysa bunu hata kodu olarak iletir.
Bir mail sunucunun çalışma mantığı aklınıza oturduysa bunu hazırlamış olduğum komponentle nasıl yapacağımızı göstereceğim:
Windows uygulaması olarak programınızda kullanmak istiyorsanız Erle.dll’e referans verin. Web uygulamasında kullanmak istiyorsanız /bin/ klasörünün içine Erle.dll’i atın.
(Erle.dll aşağıdaki zipli dosyanın içinde)
Mail bilgileri için MailInfo, bu emaili göndermek için DnsMail sınıfını kullanacağız. Bundan önce bu sınıflar hakkında çok önemli bilgiler vermek istiyorum:
MaiInfo ve DnsMail hakkında önemli bilgiler:
MailInfo’nun Recipients (alıcılar) özelliği aynı olan alan adlarını kabul eder. Kısaca ilk eklenen
[email protected]
ise, diğerleri de
[email protected]
,
[email protected]
olmak zorundadır. Eğer bu kurala uymazsanız EmailException istisna durumu fırlatılır.
Sadece alıcı(lar)nın gerçekten var olup olmadığını merak ediyor, emaili göndermek iste
mi
yorsanız MailInfo sınıfının SendMail özelliğini false yapmalısınız. (varsayılan true)
Şimdi gelelim DnsMail’in önemine; Maili göndermek için MailInfo’u DnsMail’e aktarmak gerekir ve Send() metodunu çağırmak gerekir. (SendMail=false ise maili göndermez)
DnsMail’in UseLog özelliğini true yaparsanız ve Closed olayını yakalarsanız karşı sunucu tarafından oluşan logu görebilirsiniz.
DnsMail’in TickCount özelliği mailin kaç ms’de gönderildiğini gösterir.
Şimdi gelelim DnsMail’in can alıcı noktasına:
Olaylar
Gelişmiş bir uygulama kendini oluşturduğu olaylarla belli eder. DnsMail’in Send() metodunu çağırdığınızda sırasıyla hangi olaylar oluşur?
DnsMail’in Olayları:
Resolved:
domain.com için herhangi bir MX kaydı veya IP adresi bulunduğunda bu olay gerçekleşir. Bir alan adına ait bu kayıtları bu olayda öğrenebilirsiniz.
Connected:
Yukarıdaki olaylan sonra bütün IP kayıtlarına emaili gönderesiye kadar bağlanmaya çalışır. Biriyle bağlantı kurulduysa bu olay gerçekleşir ve hangi IP ile bağlandığını öğrenebilirsiniz.
Authorized:
MailInfo’u yapılandırıken mailserver kullanacağınızı belirttiyseniz ve kullanıcı adı ve şifreyi ayarladıysanız bu olay yetki işleminin başarılı olduğunu söyler.
RecipientsAdded:
İşte en önemli özellik bu. Alıcılar karşı sunucuya sırasıyla gönderilir ve hepsi gönderildiğinde bu olay gerçekleşir. Bu durumda bu olay içinde hangi kullanıcının gerçekten var olup olmadığını, hangisinin kotasını aştığını öğrenebilirsiniz.
Ready:
Bu da önemli bir özelliktir. Yukarıdaki olaydan sonra alıcılardan en az 1 tanesi kabul edildiyse bu olay gerçekleşir. Bu durumda MailInfo’nun Subject, Body gibi özelliklerini atayabilirsiniz. Örneğin kullanıcı kayıt sisteminiz var ve kullanıcının email adresine bir yetki kodu göndermek istiyorsunuz. Bu olay gerçekleştiğinde veritabınıza yetki kodunu ve kullanıcı ile bilgileri ekleyip Body özelliğine atama yapmak mantıklı olacaktır. Böylece gereksiz kayıtlar veritabanına eklenmemiş olacaktır.
SendProggress:
Bu karizmatik bir olaydır. Göndermek istediğiniz içerik çok fazla ve uygulamanızda bir proggress bar kullanıyorsunuz. Emailin gidişiyle ilgili bir ilerleme çubuğu tam size göre ise işte size olay.
Sent:
Fazla söze gerek yok. Email gönderildi olayıdır.
Closed:
UseLog özelliğini true yaptıysanız ve oluşan logu görmek istiyorsanız bu olayı kullanmanız gerekir.
Bu kadar güzel özellikleri ve olayları öğrendikten sonra gelelim bunu uygulamalarımızda nasıl kullanacağımıza. DnsMail geliştirilmeye açık bir sınıftır. Bu sınıftan kendi sınıflarınızı türeterek hayal gücünüze bağlı daha fazla özellik ya da olay ekleyebilirsiniz. Yok benim için bu yeterli diyorsanız işte size her şeyiyle açıklanarak yazılmış bir aspx örneği:
Not:
/bin/
klasörüne
Erle.dll
dosyasını kopyalamayı unutmayın!
ASPX ÖRNEĞİ:
// Uygulamamıza Erle.DnsMail isim alanını dahil edelim. <%@ Language="C#" Debug="true"%> <%@ Import Namespace="Erle.DnsMail"%>
From:
To:
FromName:
Subject:
Body:
Bu örneği Windows uygulamarında da kullanabilirsiniz. Yalnız Erle.dll’e referans vermeyi unutmayın!
SONUÇ:
Bu makalede elimden geldiğince bir mail sunucunun nasıl çalıştığını ve hazırlamış olduğum component’i nasıl kullanabileceğinizi açıkladım. Daha fazla bilgiyi Erle.DnsMail.doc belgesinde bulabilirsiniz. Bu komponent her email gonderilmek istenildiginde DnsServer’ı sorgulamaz. Örneğin hotmail.com’un kayıtları alındığında bunu 2 dakika boyunca hafızada tutar. Her 10 dakikada hafızadaki bütün kayıtları siler.
NOTLAR:
NOT-1:
Aşağıdaki zipli dosya da sizin için gerekli bütün dosyalar vardır:
Erle.dll: Kullanmanız gereken .net dll’i
Erle.DnsMail.doc: Tam 17 sayfalık açıklamarıyla, uygulamarıyla bir yardım dosyası
mailgonder_cs.aspx: c# örneği
mailgonder_vb.aspx: VB.net örneği
mx_srogula.aspx: Mx kayıtlarının nasıl sorgulandığına dair bir örnek
[Yukarıdaki dosyaların tamamını indirmek için tıklayın!]
NOT-2:
Bu component için dnsapi.dll dosyasının bilgisayarınızda bulunması gerekir. WinXP ve Win2000 işletim sistemleri ve sonrasında bu dosya bulunmaktadır. Eğer Win98 kullanıyorsanız dnsapi.dll dosyasını internetten bulup C:\System\ klasörüne atarsanız sorun kalmayacaktır.
NOT-3:
Projenin kaynak kodlarını istiyorsanız belirli bir ücret karşılığında kodlara sahip olabilirsiniz. İletişim için (ev.et [AT] rocketmail.com) email adresini kullanabilirsiniz.
Makale:
SMTP Server Kullanmadan E-mail Gonderme (.NET) ASP.NET Ethem Evlice
Yazılan Yorumlar
Yorum Yaz
AĞU
24
2005
Adım Yok
/
üye hakkında
bencede çok karıştırmış işi
AĞU
10
2005
adim soyadim
/
üye hakkında
Sanırım sen sadece email göndermek istiyorsun. Senin için bağlanılan yerin IP si ve Mail sunuculari nedir, kullanici gercekten var mi yok mu, kullanici gercekten varsa bodynin içeriği o anda atamak seni ilgilendirmiyorsa daha kısa bir kod örneği var. Eger kodları biraz anlamaya gayret etseydin işin özetinin şu satırlar olduğunu anlardın: MailInfo mi = new MailInfo() mi.From =
[email protected]
mi.FromName = Gonderen isim mi.Recipients.Add(new Recipient(
[email protected]
)) mi.Subject = Konu mi.Body = Mesaj DnsMail dm = new DnsMail(mi) dm.Send()
TEM
26
2005
fırat karakan
/
üye hakkında
Çok güzel bir konu da sen bunu çok karışık bir hale getirip zorlaştırmışsın
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl