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.
publicvoid SendMail()
{
MailMessage mail = newMailMessage(); // mail adında MailMessage nesnesi yaratıyoruz.
mail.From = newMailAddress(“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 = newSmtpClient(); //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 = newNetworkCredential(“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…
Teşekkkür ederim.
Arkadaşım ben yapmayı denedim fakat olmadı.
Bana çalışan açık kaynaklı bir örnek gönderirmisin.
e-postam = mistersolonely@hotmail.com
Özkan arkadaşın hatasının aynısı bende alıyorum dediğiniz kütüphaneleri eklememe rağmen.Ne yapmam gerekiyor?
Özkan Tekeci hata almamak için “using System.Net” ve “using System.Net.Mail” kütüphanelerini eklemen lazım.
kullandığınız kodun tamamını (şifreniz haric) gönderebilir misiniz
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
Güzel Bilgi Murat. eline sağlık
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…
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
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…