ASP.NET ile E-Mail Gönderme
Klasik ASP 'nin ayrıntı denebilecek bazı işleri yapabilmesi için
bileşenlere ihtiyaç duyulmasından hep şikayet edilir. Hatta birçok kişi ASP 'nin
en kötü yanının bu olduğunu düşünür. ASP ile e-mail göndermek için server'da
gerekli bileşenlerden en az birisinin yüklü bulunması gerekir.
ASP
kaynak sitelerinin ve böylece ASP kullanımının artmasıyla birlikte bedava ASP
destekli bulundurma hizmeti veren siteler açılmaya başladı. Ancak bunlar bedava
oldukları için bazı özelliklerden yoksunlar. Bazılarına FTP ile bağlanamazken,
bazılarında bulunan sitelere ulaşmak mümkün olmuyor. Çoğunda ise herhangi bir
mail bileşeni yok. Yani bedava ASP bulundurma sitesinden hesabı bulunan kişiler
e-mail gönderemiyorlar.
ASP.NET 'te durum böyle değil. E-mail göndermek
için ayrı bir bileşene ihtiyaç yok. ASP.NET ile site yapan herkes iletişim
sayfasında e-mail adresini vermekle yetinmeyip mail formunu da hazırlayabilir.
Peki nasıl ?
Şimdiye kadar ki örneklerde herhangi bir namespace
(isimuzayı) 'e ihtiyaç duymadık. Code-behind özelliğini kullanmadığımız için web
kontrolü kullanacağımızda System.Web.UI.WebControls namespace 'ini sayfamıza
dahil etmemiz gerekmedi. Ancak bu sefer buna gerek duyuyoruz. Mail göndermek
için gerekli namespace 'i "Import" direktifini kullanarak sayfamıza dahil
edeceğiz. Bu namespace System.Web.Mail, CDOSYS (Collaboration Data
Objects for Windows 2000) bileşenini kullanarak mail göndermemize olanak
verir.
class=ASP_PageDirective><%@ Page language="VB" debug="true" %> <%@ Import Namespace="System.Web.Mail" %> |
System.Web.Mail
namespace 'i içerisindeki MailMessage ve SmtpMail sınıflarını
kullanacağız. MailMessage sınıfının özelliklerini kullanarak gönderilecek adres,
konu ve mesaj gibi içeriği oluşturan elemanları belirleyeceğiz. SmtpMail
sınıfıyla ise maili göndereceğiz.
width=399>
Önce ziyaretçinin bilgi
girişi yapacağı formu hazırlıyoruz. Bu form gönderen kişinin e-mail adresinin,
e-mailin konusunun ve mesajın yazılacağı birkaç TextBox kontrolünden ve tabii ki
bir Button kontrolünden oluşacak. Script etiketleri içerisinde MailGonder isimli
bir sub oluşturuyor ve Button kontrolünün OnClick özelliğine bu sub 'ın ismini
yazıyoruz. Şimdi MailGonder 'in içerisinde bulunması gereken kodlara sıra geldi.
class=HTML_Element><script
class=HTML_AtributList> runat=
class=HTML_AtributListValues>"server">
class=HTML_CodeInServerSideBlock> Sub MailGonder(Sender As Object, E As EventArgs) Dim YeniMail As New MailMessage() YeniMail.From = txtKimden.text YeniMail.To class=vb_op>= class=vb_s>"info@site.com" YeniMail.Subject class=vb_op>= txtKonu.text YeniMail.Body = txtMesaj.text SmtpMail.SmtpServer = class=vb_s>"mail.site.com" SmtpMail.Send(YeniMail) Response.Write( class=vb_s>"Mail gönderildi") Response. class=vb_k>End End class=vb_k>Sub </ class=HTML_ElementName>script class=HTML_AtributList>> |
MailGonder
sub 'ında ilk olarak türü MailMessage olan yeni bir nesne oluşturuyoruz.
Ardından bu nesnenin From (Kimden), Subject (Konu) ve Body
(Mesaj) özelliklerine hazırladığımız bilgi giriş formundaki kontrollerin
değerlerini atıyoruz. To (Kime) özelliğine değeri direk atıyoruz. Çünkü
e-mail formuyla sadece bu adrese e-mail gönderilebilmesini istediğimizi
farzediyorum
Daha sonra SmtpMail.SmtpServer özelliğini kullanarak
e-maili gönderirken kullanılacak olan mail server 'ın adresini belirliyoruz. Son
aşama ise e-mailin gönderilmesi.. SmtpMail sınıfının Send yöntemine,
e-mail mesajının içeriğini oluşturmak için kullandığımız YeniMail 'i parametre
olarak yolluyoruz. Ve e-mail gönderiliyor. Hepsi bu kadar..
| Sayfanın tüm kodu | |
class=ASP_PageDirective><%@ Page language="VB" debug="true" %> <%@ Import Namespace="System.Web.Mail" %> class=HTML_Element><script class=HTML_AtributList> runat= class=HTML_AtributListValues>"server"> class=HTML_CodeInServerSideBlock> Sub MailGonder(Sender As Object, E As EventArgs) Dim YeniMail As New MailMessage() YeniMail.From = txtKimden.text YeniMail.To class=vb_op>= class=vb_s>"info@site.com" YeniMail.Subject class=vb_op>= txtKonu.text YeniMail.Body = txtMesaj.text SmtpMail.SmtpServer = class=vb_s>"mail.site.com" SmtpMail.Send(YeniMail) Response.Write( class=vb_s>"Mail gönderildi") Response. class=vb_k>End End class=vb_k>Sub </ class=HTML_ElementName>script class=HTML_AtributList>> class=HTML_Element><form class=HTML_AtributList> runat="server" style="font: 11px verdana;"> Kimden :< class=HTML_ElementName>br class=HTML_AtributList>> < class=HTML_ElementName>asp:TextBox id= class=HTML_AtributListValues>"txtKimden" runat= class=HTML_AtributListValues>"server" width= class=HTML_AtributListValues>"230"/> class=HTML_Element><br class=HTML_AtributList>> Konu : class=HTML_Element><br class=HTML_AtributList>> < class=HTML_ElementName>asp:TextBox id= class=HTML_AtributListValues>"txtKonu" runat= class=HTML_AtributListValues>"server" width= class=HTML_AtributListValues>"230"/> class=HTML_Element><br class=HTML_AtributList>> Mesaj : class=HTML_Element><br class=HTML_AtributList>> < class=HTML_ElementName>asp:TextBox id= class=HTML_AtributListValues>"txtMesaj" runat= class=HTML_AtributListValues>"server" TextMode= class=HTML_AtributListValues>"MultiLine" Rows= class=HTML_AtributListValues>"13" Cols= class=HTML_AtributListValues>"40"/> class=HTML_Element><br class=HTML_AtributList>> < class=HTML_ElementName>asp:Button id= class=HTML_AtributListValues>"btnGonder" runat= class=HTML_AtributListValues>"server" text= class=HTML_AtributListValues>"Gönder" OnClick= class=HTML_AtributListValues>"MailGonder"/> class=HTML_Element></form class=HTML_AtributList>> | |
Gördüğünüz
gibi ASP.NET ile e-mail göndermek çok kolay ve ayrıca birşeye ihtiyaç duyulmadan
yapılabiliyor. Gerekli olan tek şey ASP.NET desteği veren bir bulundurma
hesabınızın bulunması diyebiliriz. Peki HTML veya Text e-mail
gönderme seçenekleri yok mu ? Tabii ki var ancak bunlar daha ileriki yazıların
konusu olacak. Bu makalede en basit haliyle e-mail gönderdik. Ayrıntıları
ileride.. Görüşmek üzere..