ASP NET Otomatik Mail Gönderme Nasıl Yapılır ?

by umutocak
1 comment
ASP .NET Otomatik Mail Gönderme

ASP NET Otomatik Mail Gönderme , web programlama alanında çok kullanılan otomatik mail gönderme işlemlerinden biridir. Aslında Asp.net ile otomatik mail gönderme oldukça basit. Otomatik mail gönderme işlemi için bir web servis yazmamız gerek. Web servis için Quartz.Net kütüphanesini kullanacağız. Quartz.net kütüphanesi eğer sizde kurulu değil ise buradan kurulumuna bakabilirsiniz.

ASP .NET Otomatik Mail Gönderme , Web Servis Yazımı

ASP .NET Otomatik Mail Gönderme işlemi için öncelikle iki tane class oluşturmamız gerek. Bir tanesi mailjob , bir diğeri ise mailjobscheduler. İlk olarak MailJob klasımızı yazımıyla başlayalım. İlk önce yapmamız gereken Quartz.Net ile .Net mail kütüphanelerimizi eklemeliyiz.

using Quartz;
using Quartz.Impl;
using System.Threading.Tasks;
using System.Net;
using System.Net.Mail;

Ardından kod satırlarımıza geçelim.

public class EmailJob : IJob  {

}

Bu kısımda quartz net ile gelen Ijob class ‘ ını kullanıyoruz. Ardından içine ;

public class EmailJob : IJob
{
public async Task Execute(Quartz.IJobExecutionContext context)
{
using (var message = new MailMessage("from(Hangi mail ile gidecek)", " to(bu mail kime gidecekse buraya yazılacak)"))
{
message.From = new MailAddress("sizin mail adresiniz");
message.Subject = "Mail başlık";
message.Body = "Mail içerik kısmı";
using (SmtpClient client = new SmtpClient

{
EnableSsl = true;
Host = "smtp.gmail.com";
Port = 587;
Credentials = new NetworkCredential("mail hesabınızın adı", "şifresi") })
{
client.Send(message); 
}
}

}
}

Aşağıda bu kodların tek tek açıklamasını bulabilirsiniz.

using (var message = new MailMessage("from(Hangi mail ile gidecek)", " to(bu mail kime gidecekse buraya yazılacak)"))

Bu kod satırında bahsedilmek istenen mailin kime gidileceği ve kim tarafından iletileceği. İlk kısım from olarak belirlenir yani kim tarafından iletileceği kısımdır. İkinci kısım ise to kısmıdır. Burada sistem maili kime gönderecek ise o kişinin veya kişilerin mail hesabını yazmanız gerekir.

message.From = new MailAddress("sizin mail adresiniz");
message.Subject = "Mail başlık";
message.Body = "Mail içerik kısmı";

Buradaki kodumuzda ise message.from yazarak bir önceki kodda belirttiğimiz gibi mail adresini belirliyoruz. Buradaki asıl amaç mail adresinin ismi gözükmesini istemiyor iseniz yerine istediğiniz adı veya yazıyı yazmaktır. Messaje.Subject ile kullanıcıya atılan mailin başlığını belirleyebilirsiniz. Message.Body kısmı ise mailimizin içerik kısmıdır.

using (SmtpClient client = new SmtpClient

{
EnableSsl = true;
Host = "smtp.gmail.com";
Port = 587;
Credentials = new NetworkCredential("mail hesabınızın adı", "şifresi") })

Bir diğer kodumuzda ise mail hesabımızın hostunu , portunu ve mail hesap adı ve şifresini bildiririz. EnableSsl = True kısımda eğer gmail ile bağlantı kuruyor iseniz hesap ayarlardan dış kaynak bağlantılarına izin vermeniz gerekir. Bunu yapmaz iseniz mail gönderme işlemi gerçekleşmez , sistem hesaba giriş sağlayamaz.

Host kısmında hangi mail adresi kullanıyorsanız onu giriniz , gmail , hotmail vs. Port kısmında eğer mail hesabınız gmail de ise 587 olarak yazın. Gmail’in güncel portudur. Credentials kısmında gönderen mail adresi ve şifresini girmeniz gerekir.

MailJob kısmı bu kadardı şimdi işin asıl kısmına gelelim. Quartz.Net sayesinde otomatik mail gönderme için trigger yazacağız. MailJobScheduler kodlarını aşağıya ekliyorum.

public static class MailJobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; // create factory
scheduler.Start(); // factory started
IJobDetail job = JobBuilder.Create<EmailJob>().Build(); // create job // build // 
ITrigger trigger = TriggerBuilder.Create() // create triger
.WithDailyTimeIntervalSchedule
(s =>
s.OnEveryDay() // Gunluk calisma olayi 
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();

scheduler.ScheduleJob(job, trigger);
}
}
IJobDetail job = JobBuilder.Create<EmailJob>().Build();

Bu kısımda bir önceki class da oluşturduğumuz EmailJob kısmını buraya çağırıp build ediyoruz.

ITrigger trigger = TriggerBuilder.Create() // create triger
.WithDailyTimeIntervalSchedule
(s =>
s.OnEveryDay() // Gunluk calisma olayi 
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();

scheduler.ScheduleJob(job, trigger);

Trigger kısmımız. Bu kısımda  bir trigger oluşturuyoruz. OnEveryDay ile günlük çalışma olayından bahsediyoruz. Bu kodu yazdığınızda sitenizi veya programı sunucuya yüklediğiniz günden sonra hergün çalışır. TimeOfDay kısmında ise bu class larımızın hangi saatte çalışmaya başlayacağını ayarlayabilirsiniz.

Son olarak global.asax  dosyamızın içerisine MailJobScheduler class ‘ ımızı başlatmamız gerekmektedir.

MailJobScheduler.Start();

Bu sayede asp.net ile otomatik mail gönderme işlemini bitirmiş olduk. Aklınıza takılan bir soru varsa yorum kısmına yazabilirsiniz. Bir diğer gönderimde Quartz.net hakkında bilgilendirme yapacağım takipte kalın.

Diğer yazılarımı okumak için buraya tıklayarak blog kısmıma gidebilir , yeni bilgiler edinebilirsiniz.

You may also like

1 comment

Avatar
Umut Nisan 3, 2020 - 10:38 am

Gerçekten güzel ve detaylı bir yazı olmuş . Teşekkürler ☺️

Reply

Leave a Comment