C# ile E-Mail Gönderme

Bu yazımızda C# ile windows form üzerinden smtp ile e-mail göndermeyi anlatacağım.

İlk olarak Visual Studio’da boş form oluşturuyoruz. Forma tıklayıp sağ altta özelliklerden text kısmında formun başlığını yazıyoruz. “cagatayakinci.com Mail Gönder” olarak yazdık. 3 adet label, 2 adet textbox, 1 adet richtextbox ve 1 adet buton ekliyoruz. Labellere tıklayıp text kısmından labeldeki yazıyı değiştiriyoruz. Label1’in text kısmını “Alıcı Mail Adresi:” , Label2’nin text kısmını “E-Posta Konusu:”, Label3’ün text kısmını “E-Posta içeriği:” ve Buton’un text kısmını “Gönder” olarak değiştirdik. Programımızın görsel kısmını Şekil 1’deki gibi bir hale getirmiş olduk.

Şekil 1

Şimdi programımızın kod kısmına gelelim. Gönder butonuna iki kere basıp buton click eventin oluşmasını sağlayıp aşağıdaki kodları ekliyoruz.


MailMessage mesaj = new MailMessage();
mesaj.From = new MailAddress("cagatay@cagatayakinci.com");
mesaj.To.Add(textBox1.Text);
mesaj.Subject = textBox2.Text;
mesaj.Body = richTextBox1.Text;

SmtpClient a = new SmtpClient();
a.Credentials = new System.Net.NetworkCredential("cagatay@cagatayakinci.com", "Şifre");
a.Port = 587;
a.Host = "cagatayakinci.com";
a.EnableSsl = true;
object userState = mesaj;

try
{
    a.SendAsync(mesaj, (object)mesaj);
    MessageBox.Show("Mail Gönderilmiştir");
}

catch (SmtpException ex)
{

    System.Windows.Forms.MessageBox.Show(ex.Message, "Mail Gönderme Hatasi");
}

Kodları açıklayalım.

mesaj.From = new MailAddress("cagatay@cagatayakinci.com");

Kodu ile gönderen E-mail adresini belirttik.

mesaj.To.Add(textBox1.Text);

Kodu ile textbox1’de yazılan mail adresine mail göndermek istediğimizi belirttik.

mesaj.Subject = textBox2.Text;

Kodu ile textbox2’de yazılanların E-Mail konusu olmasını istediğimizi belirttik.

mesaj.Body = richTextBox1.Text;

Kodu ile richtexbox1’de yazılanların E-Mail içeriği olmasını istediğimizi belirttik.

SmtpClient a = new SmtpClient();

Kodu ile smtp istemcisi oluşturuyoruz.

a.Credentials = new System.Net.NetworkCredential("cagatay@cagatayakinci.com", "Şifre");

Kodu ile E-Mail göndereceğimiz E-Mail adresimizi ve şifremizi belirttik.

a.Port = 587;

Kodu ile sunucumuzun smtp portunu belirttik.

a.Host = "cagatayakinci.com";

Kodu ile smtp sunucumuzun adresini yazdık.

object userState = mesaj;

Kodu ile E-Mailimizi obje haline getirdik.

try
{
    a.SendAsync(mesaj, (object)mesaj);
    MessageBox.Show("Mail Gönderilmiştir");
}

Kodu ile E-Mail göndermeyi deniyoruz ve başarılı olursa “Mail Gönderilmiştir” şeklinde uyarı alıyoruz.

catch (SmtpException ex)
{

    System.Windows.Forms.MessageBox.Show(ex.Message, "Mail Gönderme Hatasi");
}

Kodu ile E-Mail gönderme işlemimiz başarısız olursa neden başarısız olduğu hakkında uyarı alıyoruz.

Şimdi programımızı test edelim. Şekil 2’de görüldüğü gibi bilgileri yazıp gönder tuşuna basıyoruz.

Şekil 2

E-Posta adresimizi kontrol ettiğimizde Şekil 3’teki gördüğümüz gibi E-Mailimizin başarılı bir şekilde gönderildiğini görüyoruz.

Şekil 3

Son olarak bir uyarı yapmam gerekirse, kesinlikle bu programın dosyasını kimseyle paylaşmayın. 60 saniyelik bir tersine mühendislik ile E-Mail adresinizin şifresi ele geçirilebilir. Her türlü sorunuzu bekliyorum.

Kolay gelsin.

“C# ile E-Mail Gönderme” üzerine 10 yorum

  1. uygulama maile gırıs yapamıyor cunku maıl ızın vermıyor bu konu hakkında da ufak bır ekleme yaparsanız cok mutlu olurum

    Yanıtla
  2. Anlatımınız için teşekkür ederim. Bütün her şeyi eksiksiz yazdım fakat butona tıklayınca her hangi bir olay gerçekleşmiyor. Butonun type ı submit ve formunda method u post. Farklı bir projede aynısı çalışıyor fakat yeni güncel projede çalışmıyor. Değişen tek şey arayüzün tasarımı o kadar.

    Yanıtla
      • Çok telekkür ederim tekrardan çok fazla uğraştım mail gönderme işlemini başarıyla gerçekleştirmeyi sağladım fakat butona tıklayınca return RedirectToAction (“Index”) sayfası yenilenip gelmiyor. Normalde sayfanın yenilenip uyarı mesajı ( Mesajınız iletildi, Kodu yanlış girdiniz vs.) demesi gerekiyor.

        Yanıtla
      • using MicromarinWebSite.Models;
        using MicromarinWebSite.Tools;
        using System;
        using System.Linq;
        using System.Web.Mvc;

        namespace MicromarinWebSite.Controllers
        {
        public class RequestDemoController : Controller
        {
        // GET: RequestDemo
        Context db = DatabaseConnection.Connection;

        public ActionResult Index()
        {
        int arrivingId = FindSelectedLanguageId.Find();
        if (arrivingId != 0)
        {
        ViewBag.contentWords = db.tblLanguageGenerals.Where(x => x.LanguageId == arrivingId).ToList();
        }

        ViewBag.RandomCompanies = db.tblReferences.OrderBy(x => Guid.NewGuid()).Take(4).ToList();

        return View();
        }

        [HttpPost]
        public ActionResult Index(tblRequestDemo requestDemo, string verificationCode)
        {
        //start for show language message
        int selectedLanguageId = FindSelectedLanguageId.Find();
        var languageMessage = db.tblLanguageMessages.Where(x => x.LanguageId == selectedLanguageId).ToList();
        string print = “”;
        //end show language message

        if (requestDemo.RequestDemoEmail != null && requestDemo.RequestDemoMessage != null)
        {
        if (verificationCode == Session[“Captcha”].ToString())
        {
        requestDemo.RequestDemoDate = DateTime.Now;
        db.tblRequestDemoes.Add(requestDemo);
        db.SaveChanges();

        //Sending mail
        string subject = requestDemo.RequestDemoCompanyName + ” (Demo İsteği)”;

        string nameSurname = requestDemo.RequestDemoNameSurname;
        string eMail = requestDemo.RequestDemoEmail;
        string phoneNumber = requestDemo.RequestDemoPhoneNumber;
        string message = requestDemo.RequestDemoMessage;
        string body = “” + subject + “” + “Ad Soyad:” + nameSurname + “E-posta: ” + eMail + “Telefon Nu:” + phoneNumber + “Mesaj:” + message + “”;

        string to = “ynsmrkaradag@gmail.com”;
        SendMail.Send(to, subject, body);
        //End sending mail

        foreach (tblLanguageMessage messages in languageMessage)
        {
        if (messages.MessageDescription == “MessageHaveRequest”) print = messages.MessageText;
        }
        TempData[“RequestDemoInfo”] = print;

        return RedirectToAction(“Index”);
        }
        else
        {
        foreach (tblLanguageMessage message in languageMessage)
        {
        if (message.MessageDescription == “MessageVerificationCode”) print = message.MessageText;
        }
        TempData[“RequestDemoInfo”] = print;

        return RedirectToAction(“Index”);
        }
        }
        else
        {
        foreach (tblLanguageMessage messages in languageMessage)
        {
        if (messages.MessageDescription == “MessageFillFields”) print = messages.MessageText;
        }
        TempData[“RequestDemoInfo”] = print;
        return View();
        }
        }
        }
        }

        Yanıtla
      • Çağatay Bey sorunumu çözdüm. Sorunum javascript dosyaları ile alakalı imiş. Ekrana bildirim gelmemesinin sebebi ondan dolayıymış. Javascript dosyalarını düzeltince sorunum çözülmüştür teşekkür ederim

        Yanıtla
  3. Merhabalar bir şey soracaktım
    a.EnableSsl bu kısım da hata veriyor bunu yazınca çıkmıyor ne yapmaliyiz

    Yanıtla

Yorum yapın