C# Mail Gönderme İşlemleri, yazım ile karşınızdayım. C Sharp Mail Gönderme İşlemleri , şüphesiz ki hemen hemen tüm projelerimizde bizlere lazım olan bir işlemdir. Özellikle erp, crm gibi büyük projelerde mutlaka lazım olan bir işlemdir. Örnek olarak bir satın alma talebi açıldığında ilgili kişilere mail gönderilmesini isteyebiliriz. Yada bir operatör arıza kaydı açtığında bakım departmanındaki bir yetkiliye mail gönderilmesini isteyebiliriz. Bu gibi işlemler projeyi daha profesyonel bir hale getirecektir. Hemde yöneticilerinde hoşuna gidecektir. En çok kullanmamız gerekecek olan kısımlardan birisi de şirket yöneticilerine raporların otomatik olarak mail gönderilmesidir. İnsanların hazırlayacağı raporlardan daha dakik, daha doğru sonuçları içereceklerinden de şüphe duyulmayacaktır. Bu sebeplerde mail gönderme işlemi çok gerekli bir işlem olduğundan bu dersimi de verebildiğim kadar açıklayıcı yazmaya çalışacağım. Gelin C Sharp Mail Gönderme İşlemleri nasıl yapacağımızı görelim.
C Sharp Mail Gönderme İşlemleri
Giriş bölümünde gerekliliklerini belirttim. Bu kısımda direk kodlara geçelim. Kodlarımızla birlikte diğer gerekli açıklamaları da vereceğim.
Öncelikle bu eğitim setimin ilk dersi olan Yazılıma Başlamak Mı İstiyorsunuz? Görmeniz Lazım! yazımda ve hemen hemen tüm yazılarımda sürekli bahsettiğim gibi bir class açıyoruz.
Kendi class’ımı direk sizinle paylaşacağım. Bazı sorunlar sebebi ile çalıştığına emin olduğum kodları değil başka bir projemden bulduğum kodları yazacağım. Büyük ihtimalle çalışıyordur ancak %100 emin değilim. Denemelerini yapıp kontrol edersiniz. Sorun yaşarsanız iletişim sayfamdaki iletişim bilgilerimden yada sosyal medya hesaplarımdan bana ulaşabilirsiniz.
NOT: Aşağıda verdiğim kodlarda c# mail gönderme dosya ekleme işlemi de vardır.
Mail gönderme kodlarımız.
using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; // mail gönderme işlemleri için gereklidir. using System.Text; using System.Text.RegularExpressions; // regex komutunu kullanabilmemiz için gereklidir. namespace DenemeProje.Metodlar { public static class SendMail { public static bool Send(string MailHesabi, string MailHesapSifresi, string MailUnvan, string MailAdresi, string MailKonu, string MailIcerik, string MailEkleri, string Pop3Host , int Pop3Port) { try { System.Net.NetworkCredential cred = new System.Net.NetworkCredential(MailHesabi, MailHesapSifresi); // mail göndermek için oturum açtık System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); // yeni mail oluşturduk mail.From = new System.Net.Mail.MailAddress(MailHesabi, MailUnvan); // maili gönderecek hesabı belirttik mail.To.Add(MailAdresi); // mail gönderilecek adres mail.Subject = MailKonu; // mailin konusu mail.IsBodyHtml = true; // mail içeriği html olarak gönderilsin mail.Body = MailIcerik; // mailin içeriği mail.Attachments.Clear(); // mail eklerini temizledik string[] sonuc1 = Regex.Split(MailEkleri, "/"); // MailEkleri parametresinde mailie ekleyeceğimiz tüm dosyaları aralarına " / " koyarak birbilerine ekledik foreach (string items in sonuc1) { if (items != "") { mail.Attachments.Add(new Attachment("\\Mail_Eklerinin_Yolu\\" + items)); // MailEkleri parametresinden gelen veriyi " / " işareti sayesinde parçaladık. // Kaydettiğimiz yerin yolunu ile birlikte dosyaları aldık ve maile ekledik. } } // göndereceğimiz maili hazırladık. System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(Pop3Host, Pop3Port); // smtp servere bağlandık smtp.UseDefaultCredentials = false; // varsayılan girişi kullanmadık smtp.EnableSsl = true; // ssl kullanımına izin verdik smtp.Credentials = cred; // server üzerindeki oturumumuzu yukarıda belirttiğimiz NetworkCredential üzerinden sağladık. smtp.Send(mail); // mailimizi gönderdik. // smtp yani Simple Mail Transfer Protocol üzerinden maili gönderiyoruz. return true; } catch (Exception) { return false; } } } }
Kodlarımızın hepsi yukarıdaki gibidir. Kodları biraz açıklamak gerekirse;
NOT: Attachment Ekleme konusundaki detaylı açıklama için bağlantıya tıklayabilirsiniz.
Yukarıdaki mail gönderme işlemi POP3 üzerinden mail gönderme işlemidir. POP3 host ve Port numaralarını hangi şirket ile çalışıyorsanız o şirketten almanız gerekmektedir. Gmail, hotmail gibi mailleri kullanıyorsanız bu bilgileri internette rahatlıkla bulabilirsiniz.
NOT: GMAIL üzerinden mail gönderebilmeniz için, mail göndereceğiniz hesapta oturum açtıktan sonra “https://myaccount.google.com/lesssecureapps?pli=1” bu adrese giderek Daha az güvenli uygulamalara izin ver: KAPALI ayarını AÇIK olarak değiştirmelisiniz. Aksi takdirde mailler gönderilmeyecektir.
Kodlarımızı try catch içerisine aldık. Mail gönderilmez ise metodumuz false, gönderilirse true değer gönderecektir. Bizde bu şekilde mailin durumunu anlayabileceğiz.
Bu kodları IMAP üzeriden mail gönderecek şekilde ayarlayabilirsiniz. Ancak bazı farklılıklar olabilir. Bu farklılıklar tüm kodları değiştirmenizi gerektirecek kadar çok ise, yine bu class içerisine bir metod daha tanımlarsınız, IMAP ve POP3 olarak adlarını değiştirir rahatlıkla kullanırsınız.
C Sharp Mail Gönderme İşlemleri , dersimiz de bu kadar dostlar. Diğer c sharp eğitimleri derslerimizde görüşmek üzere…
C Sharp Eğitim Seti ve ERP Programlama ders listesi için tıklayınız.
Takipte ve Sağlıcakla kalın. ?
Örnek güzel ama yanlış bilgilendirme mevcut “POP3, OSI referans modelinin uygulama katmanında çalışan bir E-posta iletişim protokolüdür. Bu protokol yerel E-posta alıcıları tarafından uzak sunucudan E-postaları indirmek için kullanılır ve bu işlem TCP 110 numaralı port üzerinden gerçekleştirilir. POP ve IMAP günümüzde en çok kullanılan iki e-posta protokolüdür.”
Mail gönderme işlemlerinde SMTP kullanılır. “SMTP Elektronik posta gönderme protokolü, bir e-posta göndermek için sunucu ile istemci arasındaki iletişim şeklini belirleyen protokoldür. Farklı işletim sistemleri için geliştirilmiş e-posta protokolleri vardır. Bu protokollerinin SMTP’ye geçit yolu vardır.” lütfen bu tarz bilgilendirmelere dikkat edin. Temelden yanlış öğretirseniz insanların algısını değiştirmeleri zor olacaktır.
Yorumunuz için teşekkür ederim.
Tam olarak nerede yanlış bilgi verdiğimizi söyleyebilir misiniz?
Yanlış olan kısmı düzelteyim.