protected override void OnStart(string[] args) { using (UnitOfWork Unit = UOW.GetInstanceForJobs()) { Unit.LogError(new Exception(" MainService Start")); } EmailsSenderJobTimer.Elapsed += new ElapsedEventHandler(ESJ.StartSending); EmailsSenderJobTimer.Interval = int.Parse(ConfigurationManager.AppSettings["EmailServiceTimer"].ToString()); EmailsSenderJobTimer.Enabled = true; EmailsSenderJobTimer.Start(); }
public void StartSending(object sender, System.Timers.ElapsedEventArgs e) { using (UnitOfWork Unit = UOW.GetInstanceForJobs()) { Unit.LogError(new Exception(" StartSending Start")); UserManager UserMgr = new UserManager(Unit); Manager <OutgoingEmail> Mgr = new Manager <OutgoingEmail>(Unit); Expression <Func <OutgoingEmail, bool> > Filter = x => !x.IsDeleted && !x.IsProcessing; List <OutgoingEmail> OutGoingMails = Mgr.FindAll(Filter, "Id", null, null); //Set IsProcessing To True OutGoingMails.ForEach((outGoingMail) => { outGoingMail.State = BaseState.Modified; outGoingMail.IsProcessing = true; }); Mgr.AddUpdate(OutGoingMails); Unit.SaveChanges(); foreach (OutgoingEmail outgoingEmail in OutGoingMails) { try { var EmailBody = this.GetEmailTemplateBody(outgoingEmail); List <string> EmailsList = UserMgr.GetUserEmails(outgoingEmail.MailReceiverType); //MailSender.SendEmail(outgoingEmail.Subject, EmailBody, user.Email); foreach (var email in EmailsList) { try { MailSender.SendEmail(outgoingEmail.Subject, EmailBody, email); } catch (Exception ex) { Unit.LogError(new Exception("Error Send Email Id: " + outgoingEmail.Id + " ----- To:" + email)); Unit.LogError(ex); } } outgoingEmail.State = BaseState.Modified; outgoingEmail.IsSuccess = true; Mgr.AddUpdate(outgoingEmail); Unit.SaveChanges(); } catch (Exception ex2) { Unit.LogError(new Exception("Error Send Email Id: " + outgoingEmail.Id)); Unit.LogError(ex2); throw; } } } }