public ActionResult Save(IncomingEmail model) { DBEntities e = COREobject.i.Context; if (ModelState.IsValid) { // Záznam ji. existuje - pouze upravujeme if (!model.Id.Equals(null)) { IncomingEmail row = e.IncomingEmail.Single(m => m.Id == model.Id); row.Name = model.Name; row.ImapServer = model.ImapServer; row.ImapPort = model.ImapPort; row.UserName = model.UserName; row.Password = model.Password; e.SaveChanges(); } else { e.IncomingEmail.Add(model); e.SaveChanges(); } IncomingEmailListener.AddListener(model); return(RedirectToRoute("Hermes", new { @action = "Index" })); } else { return(View("~/Views/Hermes/Incoming/Form.cshtml", model)); } }
public ActionResult Delete(int id) { DBEntities e = COREobject.i.Context; IncomingEmail row = e.IncomingEmail.Single(m => m.Id == id); IncomingEmailListener.RemoveListener(row.Name); e.IncomingEmail.Remove(row); e.SaveChanges(); return(RedirectToRoute("Hermes", new { @action = "Index" })); }
// GET: Placeholder list public ActionResult Index(int?mailboxId) { DBEntities e = COREobject.i.Context; IncomingEmail mailbox = e.IncomingEmail.Single(m => m.Id == mailboxId); ViewData["SMTPServersCount"] = e.SMTPs.Count(); ViewData["EmailTemplatesCount"] = e.EmailTemplates.Count(); ViewData["EmailQueueCount"] = e.EmailQueueItems.Count(); ViewData["IncomingEmailCount"] = e.IncomingEmail.Count(); ViewData["MailboxName"] = mailbox.Name; ViewData["mailboxId"] = mailbox.Id; return(View(mailbox.IncomingEmailRule.ToList())); }
public static void AddListener(IncomingEmail model) { if (clients.ContainsKey(model.Name)) { clients[model.Name].Dispose(); clients.Remove(model.Name); } ImapClient client = new ImapClient(model.ImapServer, model.ImapPort ?? 143, model.UserName, model.Password, AuthMethod.Login, model.ImapUseSSL); client.NewMessage += (sender, e) => { IncomingEmailListener.onNewMessage(sender, e, model.Name); }; clients.Add(model.Name, client); }
private static void onNewMessage(object sender, IdleMessageEventArgs e, string incomingMailboxName) { COREobject core = COREobject.i; MailMessage mail = e.Client.GetMessage(e.MessageUID, FetchOptions.Normal); IncomingEmail email = core.Context.IncomingEmail.SingleOrDefault(m => m.Name == incomingMailboxName); if (email != null && email.IncomingEmailRule.Count() > 0) { foreach (IncomingEmailRule rule in email.IncomingEmailRule) { bool result = EvaluateRule(rule, mail); if (result) { Block block = GetBlockWithWF(core.Context, rule.ApplicationId, rule.BlockName.RemoveDiacritics()); if (block != null) { core.Application = rule.Application; try { PersonaAppRole role = core.Context.AppRoles.FirstOrDefault(r => r.Name == "System" && r.ApplicationId == rule.ApplicationId); core.User = core.Context.Users.FirstOrDefault(u => u.Users_Roles.Any(r => r.RoleName == role.Name && r.ApplicationId == role.ApplicationId)); } catch (Exception) { } OmniusInfo.Log($"Začátek zpracování mailu: {email.Name} / Pravidlo {rule.Name} / Blok {rule.BlockName} / Button {rule.WorkflowName}", OmniusLogSource.Hermes, rule.Application, core.User); FormCollection fc = new FormCollection(new NameValueCollection() { { "MailFrom", mail.From.Address }, { "MailCC", string.Join(";", mail.CC.Select(cc => cc.Address).ToList()) }, { "MailSubject", mail.Subject }, { "MailBody", mail.Body }, }); var runResult = new Tapestry.Tapestry(core).run(block, rule.WorkflowName, -1, fc, 0); OmniusInfo.Log($"Konec zpraconání mailu: {email.Name} / Pravidlo {rule.Name} / Blok {rule.BlockName} / Button {rule.WorkflowName}", OmniusLogSource.Hermes, rule.Application, core.User); } } } } }