public List <MD_EMAILModel> LeggiMailAppese() { List <MD_EMAILModel> model = new List <MD_EMAILModel>(); MailDispatcherDS ds = new MailDispatcherDS(); using (MailDispatcherBusiness bMD = new MailDispatcherBusiness()) { bMD.FillMD_RICHIEDENTI(ds); bMD.FillMD_EMAIL_APPESE(ds); foreach (MailDispatcherDS.MD_EMAILRow email in ds.MD_EMAIL.OrderByDescending(x => x.DATACREAZIONE)) { MD_EMAILModel em = new MD_EMAILModel(); em.IDMAIL = email.IDMAIL; em.Tentativo = email.TENTATIVO; em.IdRichiedente = email.IDRICHIEDENTE; MailDispatcherDS.MD_RICHIEDENTIRow richiedente = ds.MD_RICHIEDENTI.Where(x => x.IDRICHIEDENTE == email.IDRICHIEDENTE).FirstOrDefault(); em.Richiedente = richiedente == null ? string.Empty : richiedente.RICHIEDENTE; em.DataCreazione = email.DATACREAZIONE; em.Stato = email.STATO; em.Oggetto = email.OGGETTO; model.Add(em); } return(model); } }
public List <MD_RICHIEDENTEModel> CreaNuovoRichiedente(string Richiedente) { List <MD_RICHIEDENTEModel> richiedenti = new List <MD_RICHIEDENTEModel>(); MailDispatcherDS ds = new MailDispatcherDS(); using (MailDispatcherBusiness bMD = new MailDispatcherBusiness()) { bMD.FillMD_RICHIEDENTI(ds); if (!ds.MD_RICHIEDENTI.Any(x => x.RICHIEDENTE.Trim() == Richiedente.Trim())) { MailDispatcherDS.MD_RICHIEDENTIRow row = ds.MD_RICHIEDENTI.NewMD_RICHIEDENTIRow(); row.RICHIEDENTE = Richiedente; ds.MD_RICHIEDENTI.AddMD_RICHIEDENTIRow(row); bMD.UpdateMailDispatcherDSTable(ds.MD_RICHIEDENTI.TableName, ds); } ds.Clear(); bMD.FillMD_GRUPPI(ds); bMD.FillMD_GRUPPI_DESTINATARI(ds); bMD.FillMD_GRUPPI_RICHIEDENTI(ds); bMD.FillMD_RICHIEDENTI(ds); foreach (MailDispatcherDS.MD_RICHIEDENTIRow richiedente in ds.MD_RICHIEDENTI) { MD_RICHIEDENTEModel ri = CreaRichiedenteModel(ds, richiedente.IDRICHIEDENTE); richiedenti.Add(ri); } } return(richiedenti); }
private MD_RICHIEDENTEModel CreaRichiedenteModel(MailDispatcherDS ds, decimal IDRICHIEDENTE) { MailDispatcherDS.MD_RICHIEDENTIRow richiedente = ds.MD_RICHIEDENTI.Where(x => x.IDRICHIEDENTE == IDRICHIEDENTE).FirstOrDefault(); if (richiedente == null) { return(new MD_RICHIEDENTEModel()); } MD_RICHIEDENTEModel rm = new MD_RICHIEDENTEModel(); rm.IDRICHIEDENTE = richiedente.IDRICHIEDENTE; rm.Richiedente = richiedente.RICHIEDENTE; rm.GRUPPI = new List <MD_GRUPPO_RICHIEDENTEModel>(); foreach (MailDispatcherDS.MD_GRUPPI_RICHIEDENTIRow grRich in ds.MD_GRUPPI_RICHIEDENTI.Where(x => x.IDRICHIEDENTE == richiedente.IDRICHIEDENTE)) { MD_GRUPPO_RICHIEDENTEModel gra = new MD_GRUPPO_RICHIEDENTEModel(); gra.CC = (grRich.A_CC == "1") ? true : false; gra.Gruppo = CreaGruppoModel(ds, grRich.IDGRUPPO); gra.IDRICHIEDENTE = richiedente.IDRICHIEDENTE; gra.IDGRRICH = grRich.IDGRRICH; rm.GRUPPI.Add(gra); } return(rm); }
public decimal CreaEmail(string Richiedente, string oggetto, string corpo) { MailDispatcherDS ds = new MailDispatcherDS(); using (MailDispatcherBusiness bMD = new MailDispatcherBusiness()) { bMD.FillMD_RICHIEDENTI(ds); MailDispatcherDS.MD_RICHIEDENTIRow richiedente = ds.MD_RICHIEDENTI.Where(x => x.RICHIEDENTE.Trim().ToUpper() == Richiedente.Trim().ToUpper()).FirstOrDefault(); if (richiedente == null) { return(-1); } decimal IDMAIL = bMD.CreaMail(richiedente.IDRICHIEDENTE, oggetto, corpo); return(IDMAIL); } }
public void SendMail() { MailDispatcherDS ds = new MailDispatcherDS(); using (MailDispatcherBusiness bMD = new MailDispatcherBusiness()) { bMD.FillMD_EMAILByStato(MD_EMAIL_STATO.DA_INVIARE, ds); bMD.InsertMD_LOG(string.Format("Ci sono {0} mail da inviare", ds.MD_EMAIL.Rows.Count)); if (ds.MD_EMAIL.Rows.Count == 0) { return; } bMD.FillMD_GRUPPI(ds); bMD.FillMD_RICHIEDENTI(ds); bMD.FillMD_GRUPPI_RICHIEDENTI(ds); bMD.FillMD_GRUPPI_DESTINATARI(ds); List <decimal> idmail = ds.MD_EMAIL.Select(x => x.IDMAIL).Distinct().ToList(); foreach (MailDispatcherDS.MD_EMAILRow mail in ds.MD_EMAIL) { try { ds.MD_ALLEGATI.Clear(); bMD.FillMD_ALLEGATI(ds, mail.IDMAIL); decimal idRichiedente = mail.IDRICHIEDENTE; if (mail.TENTATIVO == 3) { bMD.InsertMD_LOG(mail.IDMAIL, "MAIL BLOCCATA", "SUPERATO IL NUMERO DI TENTATIVI AMMESSI"); mail.STATO = MD_EMAIL_STATO.BLOCCATA; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); continue; } MailDispatcherDS.MD_RICHIEDENTIRow richiedente = ds.MD_RICHIEDENTI.Where(x => x.IDRICHIEDENTE == idRichiedente).FirstOrDefault(); if (richiedente == null) { bMD.InsertMD_LOG(mail.IDMAIL, "RICERCA RICHIEDENTE", string.Format("RICHIEDENTE {0} INESISTENTE", idRichiedente)); mail.STATO = MD_EMAIL_STATO.DA_INVIARE; mail.TENTATIVO = mail.TENTATIVO + 1; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); continue; } List <string> destintinatariMail = (from destinatari in ds.MD_GRUPPI_DESTINATARI join richiedenti in ds.MD_GRUPPI_RICHIEDENTI on destinatari.IDGRUPPO equals richiedenti.IDGRUPPO where richiedenti.IDRICHIEDENTE == idRichiedente select destinatari.DESTINATARIO).ToList(); if (destintinatariMail.Count == 0) { bMD.InsertMD_LOG(mail.IDMAIL, "RICERCA DESTINATARI", string.Format("NESSUN DESTINATARIO PER RICHIEDENTE {0}", idRichiedente)); mail.STATO = MD_EMAIL_STATO.DA_INVIARE; mail.TENTATIVO = mail.TENTATIVO + 1; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); continue; } MailSender sender = new MailSender(); string oggetto = string.Format("MAIL:{0} - {1}", mail.IDMAIL, mail.OGGETTO); sender.CreaEmail(destintinatariMail, oggetto); StringBuilder sb = new StringBuilder(); sb.AppendLine("MAIL AUTOMATICA DA MAIL DISPATCHER - NON RISPONDERE"); sb.AppendLine(string.Format("MAIL: {0}", mail.IDMAIL)); sb.AppendLine(); sb.AppendLine(mail.CORPO); sender.AggiungiCorpoAllaMail(sb.ToString()); foreach (MailDispatcherDS.MD_ALLEGATIRow allegato in ds.MD_ALLEGATI) { MemoryStream ms = new MemoryStream(allegato.FILECONTENT); sender.AggiungiAllegato(ms, allegato.FILENAME); } sender.InviaMail(); mail.STATO = MD_EMAIL_STATO.INVIATA; mail.DATAINVIO = DateTime.Now; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); bMD.InsertMD_LOG(mail.IDMAIL, "INVIATA", string.Empty); } catch (Exception ex) { decimal tentativo = mail.IsTENTATIVONull() ? 0 : mail.TENTATIVO; if (tentativo < 3) { mail.STATO = MD_EMAIL_STATO.DA_INVIARE; mail.TENTATIVO = tentativo + 1; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); } else { mail.STATO = MD_EMAIL_STATO.DA_INVIARE; mail.TENTATIVO = tentativo + 1; bMD.UpdateMailDispatcherDSTable(ds.MD_EMAIL.TableName, ds); } StringBuilder exstr = new StringBuilder(); exstr.AppendLine(string.Format("Eccezione {0}", ex.Message)); exstr.AppendLine(string.Format("Stack {0}", ex.StackTrace)); while (ex.InnerException != null) { exstr.AppendLine(string.Format("Eccezione {0}", ex.InnerException.Message)); exstr.AppendLine(string.Format("Stack {0}", ex.InnerException.StackTrace)); ex = ex.InnerException; } if (exstr.Length > 200) { exstr.Remove(199, (exstr.Length - 200)); } bMD.InsertMD_LOG(mail.IDMAIL, "ERRORE", exstr.ToString()); } } } }