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()));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
                        }
                    }
                }
            }
        }