Makale Özeti

Bu makalemizde ASP.NET ile SMTP Authentication kullanarak mail gönderme işlemlerini inceleyceğiz. Bunu aparken eski System.Web.Mail sınıfları yerine System.Net.Mail sınıfını kullanacağız.

Makale

Üzerinde çalıştığımız projelerden birinde bir programcı dostumun kodlarına bakarken mail gönderim işlemleri için hala eski System.Web.Mail sınıflarını kullandığını gördüm. Bunun aslında bir zararı yok fakat yeni hali ile aslında kullanılması gereken System.Net.Mail sınıfıdır. Tabi bu noktada ufak bir sorun oluşuyor, soruna bakmadan önce gelin System.Web.Mail sınıfı ile kullanıcı adı ve şifre kullanarak SMTP Authentication desteği ile mail gönderen kodumuza bakalım.

        Dim message As New System.Web.Mail.MailMessage

        message.BodyFormat = Mail.MailFormat.Html

        message.Body = html

        message.To = "hedef@mail.com"

        message.From = "gonderen@mail.com"

        Dim server As System.Web.Mail.SmtpMail

        server.SmtpServer = "mail.sunucum.com"

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "adresim@mail.com")

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "sifrem")

        server.Send(message)


Yarattığımız message nesnesine Fields.Add metodu ile SMTP Authentication kullanacağımızı, kullanıcı adını ve şifresini aktarıyoruz. System.Web.Mail üzerinden yarattığımız SMTP sunucusunun adresini de vermeyi tabi ki unutmadık. Yukarıdaki kod herhangi bir sorun olmadan çalışacaktır, fakat Microsoft tarafından tavsiye edilen daha yeni bir sınıf yapımız var; System.Net.Mail.

        Dim message As New System.Net.Mail.MailMessage

        message.IsBodyHtml = True

        message.Body = html

        message.To.Add(New System.Net.Mail.MailAddress("hedef@mail.com"))

        message.From = New System.Net.Mail.MailAddress("gonderen@mail.com")

        Dim server As New System.Net.Mail.SmtpClient

        server.Send(message)


Kodumuzda aslında aynı işlemleri biraz daha farklı bir şekilde yaptık. "Peki nerde SMTP Authentication ayarları?" dediğinizi duyar gibiyim. Gelin o ayarları da kodumuzun içerisinde koymaktansa daha kolay değiştirebileceğimiz bir yere, yani Web.Config içerisine yerleştirelim.

  <system.net>

    <mailSettings>

      <smtp from="gonderen@mail.com">

        <network host="mail.sunucum.com" port="25" userName="kullanici adi"

                password="şifre" defaultCredentials="true" />

      </smtp>

    </mailSettings>

  </system.net>


"Yok, ben ısrarla SMTP Authentication olayını kodumun içerisinde çözmek istiyorum!" diyorsanız aşağıdaki kodu kullanabilirsiniz.

        Dim message As New System.Net.Mail.MailMessage

        message.IsBodyHtml = True

        message.Body = html

        message.To.Add(New System.Net.Mail.MailAddress("hedef@mail.com"))

        message.From = New System.Net.Mail.MailAddress("gonderen@mail.com")

        Dim server As New System.Net.Mail.SmtpClient("mail.sunucum.com")

        server.Credentials = New System.Net.NetworkCredential("kullanıcı adı", "şifre")

        server.Send(message)


Hepinize kolay gelsin.

Daron Yöndem
MCT, MCPD, MCITP, MCTS, MCSD, MCAD
MCDBA, MCP, ACP, ICSD, IEL'03
http://daron.yondem.com