none
Belirli saatlerde otomatik mail attırmak RRS feed

  • Soru

  • Merhaba arkadaşlar yapmak istediğim şey web projemde günün belirli saatlerinde otomatik yöneticiye mail göndermesini istiyorum. Örneğim her gece 12'de otomatik olarak mail atıcak... Bunu scheduled tasks haricinde başka nasıl yapabilirim? yada global.asax'da application startta bir döngü mü kurmalıyım? Mantığını oturtamadım bir türlü.
    2 Kasım 2012 Cuma 08:40

Yanıtlar

  •         public Thread emailGonder = null;
            protected void Application_Start(object sender, EventArgs e)
    {
                emailGonder = new Thread(
                    new ThreadStart(MailiGonder));
                emailGonder.Start();
    }
    
            private void MailiGonder()
            {
                while (true)
                {
                    Thread.Sleep("belirliyecegin zaman araligi");
                    try
                    {
                        bu kısımda mail metodun.
                    }
                    catch
                    {
    
                    }
                }
            }


    Software Developer

    • Yanıt Olarak Öneren fsem 2 Kasım 2012 Cuma 10:34
    • Yanıt Olarak İşaretleyen Bahar B 5 Kasım 2012 Pazartesi 16:31
    2 Kasım 2012 Cuma 10:22

Tüm Yanıtlar

  •         public Thread emailGonder = null;
            protected void Application_Start(object sender, EventArgs e)
    {
                emailGonder = new Thread(
                    new ThreadStart(MailiGonder));
                emailGonder.Start();
    }
    
            private void MailiGonder()
            {
                while (true)
                {
                    Thread.Sleep("belirliyecegin zaman araligi");
                    try
                    {
                        bu kısımda mail metodun.
                    }
                    catch
                    {
    
                    }
                }
            }


    Software Developer

    • Yanıt Olarak Öneren fsem 2 Kasım 2012 Cuma 10:34
    • Yanıt Olarak İşaretleyen Bahar B 5 Kasım 2012 Pazartesi 16:31
    2 Kasım 2012 Cuma 10:22
  • Peki Gökhan bey bu verdiğiniz kodlar nasıl çalışacak? Proje kapalıysa muhtemelen çalışmayacaktır. En azından ben öyle biliyorum. @Bahar banada bir ara lazım olmuştu. Çok önemli birşey değildi. Projede olsada olur olmasada olur bir konuydu bende olmamasını seçtim :) Ama yaptığım araştırmalarda SQL Jop denilen bir olay var. Belki işinize yarar belki yaramaz bilemeyeceğim. 

    Just a .net developer.

    5 Kasım 2012 Pazartesi 14:38
  • Peki Gökhan bey bu verdiğiniz kodlar nasıl çalışacak? Proje kapalıysa muhtemelen çalışmayacaktır. En azından ben öyle biliyorum. @Bahar banada bir ara lazım olmuştu. Çok önemli birşey değildi. Projede olsada olur olmasada olur bir konuydu bende olmamasını seçtim :) Ama yaptığım araştırmalarda SQL Jop denilen bir olay var. Belki işinize yarar belki yaramaz bilemeyeceğim. 

    Just a .net developer.

    Global.asax içerisinde Application_Start içinde oluşturulduktan sonra çalışacaktır.

    Software Developer

    5 Kasım 2012 Pazartesi 14:47
  • Merhaba ,

    Aynı ihtiyacı bende daha önce yaşadım. Alternatif olarak Basit bir WindowsService üzerine de yazabilirsiniz...

    System.Timers.Timer controlünü kullanarak properties dan interval değerini Set ederek.

    İstediğiniz aralıkta timer_elapsed methodu ile mail gönderebilirsiniz...

    Not : WindowsService tabiki Sonrasında install edilmeli vs...

    Örnek Kodlar aşağıdaki gibidir ; 

    public void Gonder()

    {

    try

    {

    MailMessage ePosta = new MailMessage();

    string ComputerName = System.Environment.MachineName; 

    ePosta.From = new MailAddress("aydinkir@gmail.com", "Tupaj Log Bilgilendirme "+ComputerName);

    ePosta.To.Add("aydink@test.com.tr");

    ePosta.To.Add("emreo@test.com.tr");

    ePosta.To.Add("isilayk@test.com.tr");

    ePosta.Attachments.Add(new Attachment(@"C:\TupajLog\NetLogs.txt"));

    ePosta.Attachments.Add(new Attachment(@"C:\TupajLog\ServisLogs.txt"));

    ePosta.Subject = "FirmaLog";

    ePosta.Body = DateTime.Now.ToString();

    SmtpClient smtp = new SmtpClient();

    smtp.Credentials = new System.Net.NetworkCredential("Username", "Password"); 

    smtp.Port = 587;

    smtp.Host = "smtp.gmail.com";

    smtp.EnableSsl = true;

    object userState = ePosta;

    bool kontrol = true;

    try

    { smtp.Send(ePosta);

    }

    catch (SmtpException ex)

    {

    kontrol = false; }

    } catch (Exception ex)

    { }

    private void timer1_Elapsed(object sender, ElapsedEventArgs e)

    {

    Gonder();

    }


      





    6 Kasım 2012 Salı 22:26