C# ile SSL Kullanarak Mail Göndermek
.NET ile SSL (https) kullanarak mail göndermek için hazırladığım ve bir çok projede kullandığım kodları sizlerle de paylaşmak istiyorum.
Öncelikle şu iki kütüphaneyi kodumuzun en üstüne yazarak sayfamıza referans gösteriyoruz.
using System.Net; // Güvenlik doğrulaması için gerekiyor
using System.Net.Mail; // Mail gönderimi için kullanılacak kütüphane
Daha sonra mail nesnelerimizi oluşturalım,
SmtpClient smtpClient = new SmtpClient(); // Yeni bir SMTP bağlantı nesnesi
MailMessage mailMessage = new MailMessage(); // Yeni bir mail mesajı nesnesi
Hemen ardından öncelikle mail nesnemize bilgileri girerek göndereceğimiz e-mail ayarlarını yapalım,
mailMessage.To.Add("burak@kanmaz.net");
// ^– Mailin gönderileceği kişi, eğer dilerseniz Add metodu ile birden fazla kişiyi ekleyebilirsiniz. Ya da Bcc.Add ve Cc.Add metotlarını da kullanabilirsiniz.
mailMessage.From = new MailAddress("isim@soyisim.com"); // Gönderen e-mail adresi
mailMessage.Subject = "Sitemize Hoşgeldiniz"; // E-Mailin başlığı
mailMessage.IsBodyHtml = true; // Eğer HTML bir mail gönderecekseniz true olmalı
mailMessage.Body = "Merhaba <b>Burak</b>"; // Mailinizin içeriği
Evet, şimdi e-mailimizi hazırladığımıza göre hemen bağlantı ayarlarımızı yapıp e-mailimizi gönderelim,
NetworkCredential networkCredential = new NetworkCredential("isim@soyisim.com", "123456");
// ^—SMTP Auth yapabilmemiz için göndericinin e-mail bilgilerini yazmalıyız.
smtpClient.Credentials = networkCredential; // Bu bilgiler ile SMTP oturumunu açacağız
smtpClient.Port = 587; // SMTP bağlantı portumuzu belirliyoruz.
smtpClient.Host = "smtp.soyisim.com"; // Mail sunucumuzun adresi
smtpClient.EnableSsl = true; // SSL kullanarak bağlanmak istediğimiz için true yapıyoruz
Süperiz, tüm ayarlarımızı yaptıktan sonra son olarak mailimizi gönderiyoruz..
smtpClient.Send(mailMessage);
Eğer dilerseniz tüm bu kodları bir try-catch bloğuna koyarak daha kararlı bir kod yazmış olursunuz.
Unutmadan şunu da ekleyelim, bu bir C# kodu olduğu için bu şekilde e-mail gönderimini hem ASP.NET ile web üzerinden hem de masaüstü uygulaması (Windows Form) üzerinden yapabilirsiniz.

Dostum unutmadan küçük bir hatırlatma yapayım. SSL ile mail gönderirken bazı sunucular Verification istiyor. Bunu yapmadığınız takdirde mailiniz gitmiyor ve mail failure send hatası halıyorsunuz. Bu hatayı gidermek için blogumda bir yazı yazacaktım ama madem sen yazmışsın seninkine ekleyiver ;) Bende sana link vereyim.
Söylediğim hatayı almamak için öncelikle using Kısmına ServicePointManager için “System.Net.ServicePoint;” ekledikten sonra mail göndermeden önce aşğıdaki kodu eklemek.
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Selametle… ;)
Hmm, ben böyle bir hata almadığım için bilmiyordum. Teşekkür ederim güzel oldu buraya bu yorumu yazman ;) Gerekince alırız buradan :) Ellerine sağlık..
Kafayı yedirtmişti bir ara da :) O yüzden unutmuyorum :D
Bugün unutmazsam Blog’a yazı yazıp link vericem sana :)