C# ile Gmail den Mail Gönderin!

04 Nisan 2009 Yazan mseker  
Kategori C#, Genel, Kategorilenmemiş, Yazılım - Program
Bu yazı 919 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!