C# ile SMTP kullanarak mail nasıl gönderilir?

Smtp nin açılımı Simple Mail Transfer Protocolüdür. Smtp , giden posta sunucu olarak bilinir, mail göndermek için kullanılır. POP3 ve IMAP protokolleri gelen posta sunucusu olarak kullanılır.

Uygulamada .Net kullanmak için aşağıdaki iki alanın eklenmesi gerekir.

using System.Net;
using System.Net.Mail; 

Ben mail ayarlarını config.ini dosyasında tanımlayıp o şekilde aldırdım.

<appSettings>
    <add key="Veri" value="select * from SVK_Transfer" />
    <add key="Email" value="esra@esraturan.com.tr" />
    <add key="MailHost" value="mail.esraturan.com.tr" />
    <add key="Sifre" value="." />
    <add key="Host" value="mail.esraturan.com.tr" />
    <add key="Domain" value="www.esraturan.com.tr" />
    <add key="Port" value="587" />
    <add key="SSL" value="False" />
    <add key="Name" value="Esra Turan" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>

public static void EmailService(Attachment attachmentFile, String[] mailList, AlternateView body, Attachment attachmentExcelFile)
{
        
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();

SmtpServer.Port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Port"]);
//Giden port bilgisi tanımlanır.Genelde 587 ve 25 portları kullanılmaktadır.
SmtpServer.Host = System.Configuration.ConfigurationManager.AppSettings["Host"]; 
//Hostunuzun smtp için mail domaini
 SmtpServer.EnableSsl = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["SSL"].ToString()); //ssl kullanılıyorsa true olarak gönderilir. Diğer durumlarda false gönderilir.
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["Email"], System.Configuration.ConfigurationManager.AppSettings["Sifre"]);
//Burada hangi hesabı kullanarak mail yollayacaksanız onun ayarlarını yapmanız gerekiyor
mail.Sender = new MailAddress(System.Configuration.ConfigurationManager.AppSettings["Email"]);
mail.From = new MailAddress(System.Configuration.ConfigurationManager.AppSettings["Email"], System.Configuration.ConfigurationManager.AppSettings["Name"]);

mail.IsBodyHtml = true; // mailin gövde kısmı html olarak gönderilecekse true gönderilir.
mail.AlternateViews.Add(body);
mail.Attachments.Add(attachmentFile); // maile eklenecek ek kısımdır
if (attachmentExcelFile != null) mail.Attachments.Add(attachmentExcelFile);
 foreach (string i in mailList)
      {

           mail.To.Add(new MailAddress(i, i)); //birden fazla ekleme attachment varsa


      }

SmtpServer.Send(mail);
mail.Attachments.Dispose(); //Attachmenti ekleme yaptıktan sonra eğer dispose edilmesse klasöre çıkartığınız pdf veya excel dosyasını klasörden silerken hata alırsınız.
SmtpServer.Dispose();
}

C# ile basit anlamda SMTP üzerinden mail göndermek bu şekildedir.  Herkese iyi çalışmalar. 🙂