C# ile Gmail den Mail Gönderin!

04 Nisan 2009 Yazan mseker  
Kategori C#, Genel, Kategorilenmemiş, Yazılım - Program
Bu yazı 1.277 kez okundu

Merhaba Arkadaşlar,
Bu makalemde C# da gmail hesabımızı kullanarak nasıl mail atacağımı anlatmaya çalışacağım. Öncelikle Visual Studio da bir C# uygulaması yaratalım. Ben size herhangi bir form tasarlamadan manuel parametreler girerek mail gönderen bir fonksiyon göstereceğim. Siz bu fonksiyon için form tasarlayarak ve nesnelerin ek özelliklerini kullanarak bu uygulamaya daha da geliştirebilirsini. Aşağıda “SendMail” adında bir fonksiyon bulunmaktadır.

 

public void SendMail()

        {

            MailMessage mail = new MailMessage(); // mail adında MailMessage nesnesi yaratıyoruz.

            mail.From = new MailAddress(“GmailHesabiniz@gmail.com”); //Mailin kimden gittiğini belirtiyoruz

            mail.To.Add(“kime@ttmail.com”); //Mailin kime gideceğini belirtiyoruz

            mail.Subject = “Deneme Mail Konusu”; //Mail konusu

            mail.Body = “Deneme Mail İiçeriği”; //Mailin içeriği

            SmtpClient sc = new SmtpClient(); //sc adında SmtpClient nesnesi yaratıyoruz.

            sc.Port = 587; //Gmail için geçerli Portu bildiriyoruz

            sc.Host = “smtp.gmail.com”; //Gmailin smtp host adresini belirttik

            sc.EnableSsl = true; //SSL’i etkinleştirdik.

            sc.Credentials = new NetworkCredential(“GmailHesabiniz”, “Şifreniz”); //Gmail hesap kontrolü için bilgilerimizi girdik

            sc.Send(mail); //Mailinizi gönderiyoruz.

        }

 

Fonksiyondaki her satır için açıklamayı yaptım. Ancak bu nesnelerin ek özelliklerini de açıklamak istiyorum.

Eğer gönderdiğimiz maillerde gönderen kısmında mail adresimizin değil de ismimizin yazmasını istiyorsak MailAddress nesnesine parametre olarak bunu belirmemiz gerekir. Aşağıda MailAddress nesnesinin alabileceği parametreler yer almaktadır.

MailAddress.MailAddress(string address,string displayName, Encoding displayNameEncoding)

Mailimizin içeriğine bir de dosya eklemek istersek aşağıdaki yapıyı kullanmalıyız.

mail.Attachments.Add(new Attachment(“C:/myText.txt”));

Böylece mailimize “myText.txt” dosyasını da eklemiş oluruz. Eğer her mail gönderdiğimizde ek dosya göndermeyeceksek bu ifadeyi if kontrolü ile koşula bağlı hale getirebiliriz. Mailimize ek özellikler de ekleyebiliriz bu özelliklerden bazıları aşağıda verilmiştir.

mail.SubjectEncoding = System.Text.Encoding.UTF8;

mail.BodyEncoding = System.Text.Encoding.UTF8;

mail.IsBodyHtml = false;

mail.Priority = MailPriority.High;

 Bir başka yazımızda görüşmek üzere, hoşçakalın…

Yorumlar


8 Yorum yapılmış "C# ile Gmail den Mail Gönderin!"

  1. MrtYLMZ demişki 05 Nisan 09 14:21 

    mailin header parametreleri gönderilmediği için gönderilen mailler junk klasörüne düşer.
    header parametreleriyle birlikte daha efektif olabilir.
    güzel makale…

  2. mseker demişki 05 Nisan 09 16:37 

    Ben denedim junk maile düşmüyor :) Yine de yaptığın yorum için teşekkür ederim. Zaten bu makalemde sadece mail göndermek için gerekli temel bilgileri verdim. MailMessage nesnesinin burada belirtmediğim daha pek çok özelliği mevcut. Bu makaleden yola çıkarak kendi outlook’unuzu bile yazabilirsiniz :D

  3. yvzklc demişki 15 Nisan 09 07:59 

    Benim aradığım tam bu değil aslında ben mail bilgilerini giremeden bir mail atmak istiyorum ve ayrıca gmail olmasa daha iyi olur..
    Ama güzel çalışma teşkkürler…

  4. msk demişki 17 Haziran 09 14:38 

    Güzel Bilgi Murat. eline sağlık

  5. Özkan Tekeci demişki 22 Haziran 09 18:37 

    denemediğim mail kodu kalmadı hepsinde de hata alıyorum bunda aldığım hata;
    Satır 57: sc.Credentials = new NetworkCredential(“mailadresim”, “*****”); //Gmail hesap kontrolü için bilgilerimizi girdik
    Satır 58:
    Satır 59: sc.Send(mail); //Mailinizi gönderiyoruz.
    Satır 60:
    Satır 61: }

    Kaynak Dosya: o:\site\ozsoymuhendislik.com.tr\Default8.aspx.cs Satır: 59

    Yığın İzleme:

    [FormatException: Posta üstbilgisinde geçersiz karakter bulundu.]
    System.Net.BufferBuilder.Append(String value, Int32 offset, Int32 count) +1103406
    System.Net.Mail.EHelloCommand.PrepareCommand(SmtpConnection conn, String domain) +81
    System.Net.Mail.EHelloCommand.Send(SmtpConnection conn, String domain) +12
    System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) +672
    System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) +159
    System.Net.Mail.SmtpClient.GetConnection() +35
    System.Net.Mail.SmtpClient.Send(MailMessage message) +1213

    [SmtpException: Posta gönderme hatası.]
    System.Net.Mail.SmtpClient.Send(MailMessage message) +1531
    Default8.SendMail() in o:\site\ozsoymuhendislik.com.tr\Default8.aspx.cs:59
    Default8.Button1_Click(Object sender, EventArgs e) in o:\site\ozsoymuhendislik.com.tr\Default8.aspx.cs:24
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

  6. mseker demişki 23 Haziran 09 10:22 

    kullandığınız kodun tamamını (şifreniz haric) gönderebilir misiniz

  7. Fuad demişki 20 Temmuz 09 02:34 

    Özkan Tekeci  hata almamak için “using System.Net”  ve “using System.Net.Mail”  kütüphanelerini eklemen lazım.

  8. Ali demişki 26 Ağustos 09 21:11 

    Özkan arkadaşın hatasının aynısı bende alıyorum dediğiniz kütüphaneleri eklememe rağmen.Ne yapmam gerekiyor?

Yorumlarınızda resiminizin gözükmesi için, gravatar a abone olun!