Makale Özeti

Bu yazıda .NET Framework’te CDOSYS (Collaboration Data Objects for Windows 2000) bileşeni ile email göndermemizi sağlayan System.Web.Mail namespace’ini inceleyeceğiz ve Visual Basic .NET, C# ve Visual C++ .NET ile email gönderen örnek uygulamalar hazırlayacağız.

Makale

Yazıların giriş paragraflarını genellikle yazıyı yazdıktan sonraya bırakıyorum. Bu seferki çeviri ağırlıklı bir yazı olduğu için yine bu yöntemin benim için daha iyi olacağını düşündüm ama bu sefer ne yazacağıma karar veremedim. Bende nasıl bir giriş paragrafı yazamadığımı yazayım dedim. Aşağıdaki yazının büyük bölümü, .NET Framework Class Library’den tercüme edilmiştir. Zayıf Türkçe’min izin verdiği ölçüde, anlaşılabilir bir anlatım kullanmaya çalıştım. Umarım başarabilmişimdir.

 

Bu yazıda .NET Framework’te CDOSYS (Collaboration Data Objects for Windows 2000) bileşeni ile email göndermemizi sağlayan System.Web.Mail namespace’ini inceleyeceğiz ve Visual Basic .NET, C# ve Visual C++ .NET ile email gönderen örnek uygulamalar hazırlayacağız.

 

System.Web.Mail namespace’i, CDOSYS ile mail göndermenizi sağlayan sınıflar içermektedir. Mail mesajı, Windows 2000 (veya Windows XP, Windows Server 2003)’te yer alan SMTP sunucusu veya belirteceğiniz başka bir smtp sunucusu aracılığıyla gönderilir. Bu namespace de yer alan sınıflar ASP.NET veya başka bir managed uygulama ile de kullanılabilir.

 

System.Web.Mail Namespace’i Hiyerarşisi

 

  • System.Object
    • System.ValueType
      • System.Enum
        • System.Web.Mail.MailEncoding
        • System.Web.Mail.MailFormat
        • System.Web.Mail.MailPriority
    • System.Web.Mail.MailAttachment
    • System.Web.Mail.MailMessage
    • System.Web.Mail.SmtpMail

 

Sınıflar

  1. MailAttachment

Bir email mesajına dosya eklenmesi ile ilgili özellik ve metodları sağlar.

System.Web.Mail.MailAttachment

 

Visual Basic: Public Class MailAttachment

C#:     public class MailAttachment

C++:             public __gc class MailAttachment

 

  1. MailMessage

Bir email mesajı oluşturulması ile ilgili özellik ve metodları sağlar.

System.Web.Mail.MailMessage

 

Visual Basic: Public Class MailMessage

C#:     public class MailMessage

C++:             public __gc class MailMessage

 

  1. SmtpMail

CDOSYS (Collaboration Data Objects for Windows 2000) bileşeni ile mesaj göndermek ile ilgili özellik ve metodları sağlar.

System.Web.Mail.SmtpMail

 

Visual Basic: Public Class MailSmtpMail

C#:     public class MailSmtpMail

C++:             public __gc class MailSmtpMail

 

Mail mesajı Windows 2000 içindeki SMTP servisi aracılığıyla veya belirtilecek farklı bir smtp sunucusu aracılığıyla gönderilebilir. Eğer bir smtp sunucusu belirtilmezse (SmtpServer) mesaj, program çalıştığında network trafiğini olumsuz etkilememesi için queue alınır, eğer bir smtp sunucusu belirtilirse, mesaj doğrudan bu sunucuya yönlendirilir.

 

 

 

Şimdi üç dil içinde bir örnek verelim;

 

Visual Basic

Imports System

Imports System.Web.Mail

 

Namespace SendMail

   Public Class usage

      Public Sub DisplayUsage()

         hata halinde gerekli syntax ları görüntüleyelim..

         Console.WriteLine("Kullanımı SendMail.exe <kime> <kimden> <konu> <mesaj>")

         Console.WriteLine("<kime> mesaji gondermek istediginiz email adresleri")

         Console.WriteLine("<kimden> sizin email adresiniz")

         Console.WriteLine("<konu> email mesajinizin konusu")

         Console.WriteLine("<mesaj> mesajiniz")

         Console.WriteLine("Ornek:")

         Console.WriteLine("SendMail.exe yazgelistir@yazgelistir.com;yazgelistir@microsoft.com kadir@postmaster.co.uk Baslik Merhaba..")

     End Sub

   End Class

 

   Public Class Start

        baslangic..

      Public Shared Sub Main(ByVal args As String())

         Try

            Try

               Dim Message As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage()

               Message.To = args(0)

               Message.From = args(1)

               Message.Subject = args(2)

               Message.Body = args(3)

               Try

                  SmtpMail.SmtpServer = "smtp sunucunuzun adresi"

                  SmtpMail.Send(Message)

               Catch ehttp As System.Web.HttpException

                  Console.WriteLine("0", ehttp.Message)

                  Console.WriteLine("Hata Mesaji")

                  Console.Write("0", ehttp.ToString())

               End Try

            Catch e As IndexOutOfRangeException

hata halinde gerekli syntax ları görüntüleyelim..

               Dim use As usage = New usage()

               use.DisplayUsage()

            End Try

         Catch e As System.Exception

            Bilinmeyen hatayı goruntule.

            Console.WriteLine("Bilinmeyen bir hata olustu 0", e.Message)

            Console.WriteLine("Hata Aciklamalari ")

            Console.WriteLine("0", e.ToString())

         End Try

      End Sub

   End Class

End Namespace

 

C#

using System;

using System.Web.Mail;

 

namespace SendMail

{

   class usage

   {

      public void DisplayUsage()

      {

         Console.WriteLine("Kullanimi SendMail.exe <kime> <kimden> <konu> <mesaj>");

         Console.WriteLine("<kime> mesaji gondermek istediginiz email adresleri");

         Console.WriteLine("<kimden> sizin email adresiniz");

         Console.WriteLine("<konu> email mesajinizin konusu");

         Console.WriteLine("<mesaj> mesajiniz");

         Console.WriteLine("Ornek:");

         Console.WriteLine("SendMail.exe yazgelistir@yazgelistir.com;yazgelistir@microsoft.com kadir@postmaster.co.uk Baslik Merhaba..");

      }

   }

 

 

   class Start

   {

      // baslangic.

      [STAThread]

      static void Main(string[] args)

      {

         try

         {

            try

            {

               MailMessage Message = new MailMessage();

               Message.To = args[0];

               Message.From = args[1];

               Message.Subject = args[2];

               Message.Body = args[3];

 

               try

               {

                  SmtpMail.SmtpServer = "mail sunucunuzun adresi";

                  SmtpMail.Send(Message);

               }

               catch(System.Web.HttpException ehttp)

               {

                  Console.WriteLine("{0}", ehttp.Message);

                  Console.WriteLine("Hata mesaji");

                  Console.Write("{0}", ehttp.ToString());

               }

            }

            catch(IndexOutOfRangeException)

            {

               usage use = new usage();

               use.DisplayUsage();

            }

         }

         catch(System.Exception e)

         {

            Console.WriteLine("Bilinmeyen bir hata olustu {0}", e.Message);

            Console.WriteLine("Hata Aciklamalari ");

            Console.WriteLine("{0}", e.ToString());

         }

      }

   }

}

 

C++

#using <mscorlib.dll>

#using <System.dll>

#using <System.Web.dll>

using namespace System;

using namespace System::Web::Mail;

 

class usage

{

public:

   void DisplayUsage()

   {

      Console::WriteLine(S" Kullanımı SendMail.exe <kime> <kimden> <konu> <mesaj>");

      Console::WriteLine(S" <kime> mesaji gondermek istediginiz email adresleri");

      Console::WriteLine(S"<kimden> sizin email adresiniz ");

      Console::WriteLine(S"<konu> email mesajinizin konusu ");

      Console::WriteLine(S"<mesaj> mesajiniz ");

      Console::WriteLine(S"Ornek:");

      Console::WriteLine(S"SendMail.exe yazgelistir@yazgelistir.com;yazgelistir@microsoft.com kadir@postmaster.co.uk Baslik Merhaba.. ");

   }

};

 

int main()

{

   String* args[] = Environment::GetCommandLineArgs();

   try

   {

      try

      {

         MailMessage* Message = new MailMessage();

         Message -> To = args[0];

         Message->From = args[1];

         Message->Subject = args[2];

         Message->Body = args[3];

 

         try

         {

            SmtpMail::SmtpServer = S"mail sunucunuzun adresi";

            SmtpMail::Send(Message);

         }

         catch (System::Web::HttpException* ehttp)

         {

            Console::WriteLine(S" {0}", ehttp->Message);

            Console::WriteLine(S"Hata Aciklamalari");

            Console::Write(S" {0}", ehttp);

         }

      }

      catch (IndexOutOfRangeException*)

      {

         usage* use = new usage();

         use->DisplayUsage();

      }

   }

   catch (System::Exception* e)

   {

      Console::WriteLine(S"Bilinmeyen bir hata olustu {0}", e->Message);

      Console::WriteLine(S" Hata Aciklamalari ");

      Console::WriteLine(S" {0}", e);

   }

}

 

Enumerations

  1. MailEncoding

Mail mesajında kullanılacak encoding metodunun belirlenmesinde kullanılır.

 

Visual Basic:          Public Enum MailEncoding

C#:             public enum MailEncoding

C++:                     __value public enum MailEncoding

 

Üyeleri:

Base64:       Mail mesajının encoding metodu olarak Base64 kullanacağını belirtir.

UUEncode:   Mail mesajının encoding metodu olarak UUEncode kullanacağını belirtir.

 

  1. MailFormat

Mail mesajının kullanacağı formatın belirlenmesinde kullanılır.

 

Visual Basic:          Public Enum MailFormat

C#:             public enum MailFormat

C++:                     __value public enum MailFormat

 

Üyeleri:

Html:          Email formatının html olduğunu belirtir.

Text:           Email formatının text olduğunu belirtir.

 

3. MailPriority

Email mesajının priority seviyesini belirler.

 

Visual Basic:          Public Enum MailPriority

C#:             public enum MailPriority

C++:                     __value public enum MailPriority

 

Üyeleri:

High:           Mesajın öncelik seviyesini high olarak ayarlar. Öncelik seviyesi high olan email mesajları, listelenirken diğer öncelik seviyesine sahip mesajlardan önce görüntülenir.

Low:           Mesajın öncelik seviyesini low olarak ayarlar. Öncelik seviyesi low olan email mesajları, listelenirken diğer öncelik seviyesine sahip mesajlardan sonra görüntülenir.

Normal:       Mesajın öncelik seviyesini normal olarak ayarlar.

 

 

Kaynak: .NET Framework Class Library

Kadir Sümerkent – kadir@postmaster.co.uk