Esempio n. 1
0
        private static void SetAccount(MailUser account)
        {
            MailServerFacade mailSCF = MailServerFacade.GetInstance(account);

            account.Validated = true;
            WebMailClientManager.SetAccount(account);
        }
Esempio n. 2
0
 protected void MailResearch_Mail(MailSelectedEventArgs e)
 {
     if (!e.UId.IsNullOrWhiteSpace())
     {
         if (!(WebMailClientManager.CurrentMailExist() && e.UId.Trim() == WebMailClientManager.CurrentMailGet().Uid))
         {
             MailServerConfigFacade configFacade = MailServerConfigFacade.GetInstance();
             MailUser         account            = configFacade.GetUserByUserId(decimal.Parse(e.CurrentAccount));
             MailServerFacade facade             = MailServerFacade.GetInstance(account);
             account.Validated = true;
             WebMailClientManager.SetAccount(account);
             int idim = 0;
             WebMailClientManager.CurrentFolderSet(e.CurrentFolder);
             WebMailClientManager.ParentFolderSet(e.ParentFolder);
             if (e.Dimension != string.Empty)
             {
                 idim = int.Parse(e.Dimension);
             }
             if (idim < int.Parse(ConfigurationManager.AppSettings["MaxMemoryDimensionForMailViewer"]))
             {
                 MailViewer1.Initialize(e.UId, e.CurrRating, e.CurrentFolder, e.ParentFolder);
                 pnlMail.Update();
             }
             else
             {
                 Message msg = new Message();
                 msg.Uid  = e.UId;
                 msg.Size = idim;
                 WebMailClientManager.CurrentMailSet(msg);
                 MailViewer1.Initialize(e.UId, e.Dimension, WebMailClientManager.CurrentFolderGet(), WebMailClientManager.ParentFolderGet());
                 pnlMail.Update();
             }
         }
     }
 }
Esempio n. 3
0
        public HttpResponseMessage AbilitaUsers(string idemail, string itemselector)
        {
            FoldersSendersModel model = new FoldersSendersModel();
            BackendUserService  bus   = new BackendUserService();

            if (string.IsNullOrEmpty(idemail) && string.IsNullOrEmpty(itemselector))
            {
                model.success = "false";
                model.message = "Valori insufficienti nella richiesta";
                this.Request.CreateResponse <FoldersSendersModel>(HttpStatusCode.OK, model);
            }
            try
            {
                // model.FoldersList = listaCartelleNonAbilitate.ToArray();
                string[] users          = itemselector.Split(';');
                var      usersAbilitati = bus.GetDipendentiDipartimentoAbilitati(int.Parse(idemail)).Select(z => z.UserId).ToArray();
                var      ff             = Array.ConvertAll(usersAbilitati, x => x.ToString());
                var      usersda        = users.Except(ff);
                var      usersa         = ff.Except(users);
                foreach (string s in usersda)
                {
                    bus.InsertAbilitazioneEmail(Convert.ToInt32(s), Convert.ToInt32(idemail), 0);
                }
                foreach (string s in usersa)
                {
                    { bus.RemoveAbilitazioneEmail(Convert.ToInt32(s), Convert.ToInt32(idemail)); }
                }
                MailUser m = WebMailClientManager.getAccount();
                if (m != null)
                {
                    WebMailClientManager.AccountRemove();
                    MailServerConfigFacade facade = MailServerConfigFacade.GetInstance();
                    MailUser         account      = facade.GetUserByUserId(m.UserId);
                    MailServerFacade serverFacade = MailServerFacade.GetInstance(account);
                    account.Validated = true;
                    WebMailClientManager.SetAccount(account);
                }
                model.success = "true";
            }
            catch (Exception ex)
            {
                if (!ex.GetType().Equals(typeof(ManagedException)))
                {
                    ManagedException mEx = new ManagedException("Eccezione nellA ABILITAZIONE UTENTI", "ERR_U005", string.Empty, ex.Message, null);
                    ErrorLogInfo     er  = new ErrorLogInfo(mEx);
                    er.objectID = idemail.ToString();
                    log.Error(er);
                    model.success = "false";
                    model.message = mEx.Message;
                }
                else
                {
                    model.success = "false";
                    model.message = ex.Message;
                }
            }
            return(this.Request.CreateResponse <FoldersSendersModel>(HttpStatusCode.OK, model));
        }
Esempio n. 4
0
        public void ProcessRequest(HttpContext context)
        {
            bool response = false;

            string idMail  = context.Request["idMail"];
            string account = context.Request["account"];
            int    rating  = -1;

            if (!String.IsNullOrEmpty(idMail) && !String.IsNullOrEmpty(account))
            {
                int risp = 0;
                if (int.TryParse(context.Request["rating"], out rating) &&
                    (rating >= 0 && rating <= 4))
                {
                    try
                    {
                        MailServerFacade mailserverFacade = MailServerFacade.GetInstance((WebMailClientManager.getAccount()));
                        risp = mailserverFacade.AssignMessageRating(idMail, rating);
                    }
                    catch (Exception e)
                    {
                        //TASK: Allineamento log - Ciro
                        if (e.GetType() != typeof(ManagedException))
                        {
                            ManagedException mEx = new ManagedException("Detagli errore: " + e.Message, "ERR_RAT", "", "", e);
                            ErrorLogInfo     err = new ErrorLogInfo(mEx);
                            err.objectID = idMail;
                            _log.Error(err);
                        }
                        //ErrorLog err = new ErrorLog("ERR_RAT", e, "", "", "");
                        //_log.Error(err);
                    }
                }

                if (risp == 1)
                {
                    response = true;
                }
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write(response.ToString().ToLower());
        }
Esempio n. 5
0
        /// <summary>
        /// modificato per gestione folders todo modificare metodi move
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="parentFolder"></param>
        /// <param name="mailAction"></param>
        /// <param name="mailIds"></param>
        /// <param name="message"></param>
        /// <param name="acc"></param>
        /// <returns></returns>
        private string DoAction(string folder, string parentFolder, int mailAction, string AllIds, string message, MailUser acc)
        {
            string[]      mailIds     = AllIds.Split(',');
            List <string> idMail      = mailIds.Where(x => !String.IsNullOrEmpty(x)).ToList();
            string        utente      = MySecurityProvider.CurrentPrincipal.MyIdentity.UserName;
            int           folderMezzo = 0;

            int.TryParse(folder, out folderMezzo);
            if (folderMezzo == 0)
            {
                folderMezzo = 1;
            }
            if (Helpers.CanDo(parentFolder, mailAction.ToString(), idMail))
            {
                MailServerFacade fac = MailServerFacade.GetInstance(acc);
                int    resp          = 0;
                string azione        = Helpers.GetAzione(mailAction.ToString());
                try
                {
                    switch (mailAction)
                    {
                    case 1:
                        resp = fac.MailMove(idMail, MailStatus.LETTA, mailAction.ToString(), utente, parentFolder);
                        break;

                    case 2:
                        resp = fac.MailMove(idMail, MailStatus.SCARICATA, mailAction.ToString(), utente, parentFolder);
                        break;

                    default:
                        // azioni generiche
                        resp = fac.MailMove(idMail, MailStatus.LETTA, mailAction.ToString(), utente, parentFolder);
                        break;
                    }
                    if (resp != idMail.Count)
                    {
                        message = "Errore nell'azione specificata";
                    }
                }
                catch (Exception e)
                {
                    //Allineamento log - Ciro
                    if (e.GetType() == typeof(ManagedException))
                    {
                        ManagedException mEx = new ManagedException("Errore nell'azione specificata " + e.Message, "ERR_G004", string.Empty, string.Empty, e);
                        ErrorLogInfo     er  = new ErrorLogInfo(mEx);
                        er.objectID = Convert.ToString(idMail);
                        log.Error(er);
                    }
                    message = "Errore nell'azione specificata " + e.Message;
                }
            }
            else if (((parentFolder == "O") || (parentFolder == "D") || (parentFolder == "AO")) && (mailIds.Length > 0) && (mailIds[0] != string.Empty))
            {
                MailServerFacade fac = MailServerFacade.GetInstance(acc);
                int resp             = 0;
                try
                {
                    resp = fac.MailArchivia(idMail, utente, mailAction.ToString(), parentFolder);
                    if (resp != idMail.Count)
                    {
                        message = "Errore nell'azione specificata";
                    }
                }
                catch (Exception e)
                {
                    //Allineamento log - Ciro
                    if (e.GetType() == typeof(ManagedException))
                    {
                        ManagedException mEx = new ManagedException("Errore nell'azione specificata " + e.Message, "ERR_G005", string.Empty, string.Empty, e);
                        ErrorLogInfo     er  = new ErrorLogInfo(mEx);
                        er.objectID = Convert.ToString(idMail);
                        log.Error(er);
                    }
                    message = "Errore nell'azione specificata " + e.Message;
                }
            }
            return(message);
        }
Esempio n. 6
0
        public HttpResponseMessage GetMails(int start, int limit, string folder, string parFolder, string mailAction, string mailIds, string filter, int page)
        {
            IEnumerable <Carrier> listCarrier = new List <Carrier>();
            CarrierModel          model       = new CarrierModel();
            int mailAct = 0;

            start++;
            if (mailAction.ToString() != "NaN")
            {
                mailAct = int.Parse(mailAction);
            }
            string   message = null;
            MailUser acc     = WebMailClientManager.getAccount();

            if (string.IsNullOrEmpty(mailIds))
            {
                mailIds = string.Empty;
            }
            message = DoAction(folder, parFolder, mailAct, mailIds, message, acc);
            ResultList <MailHeader> m = new ResultList <MailHeader>(start, limit, new List <MailHeader>(), 0);

            // IEnumerable<string> items = null;
            if (acc != null && acc.IsManaged && !String.IsNullOrEmpty(filter))
            {
                DataContractJsonSerializer s  = new DataContractJsonSerializer(typeof(Filter));
                System.IO.MemoryStream     ms = new System.IO.MemoryStream();
                byte[] res = new byte[filter.Length];
                Encoding.UTF8.GetBytes(filter, 0, filter.Length, res, 0);
                ms.Write(res, 0, res.Length);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                Filter filtro = (Filter)s.ReadObject(ms);

                Dictionary <MailIndexedSearch, List <string> > sValues = new Dictionary <MailIndexedSearch, List <string> >();
                if (filtro.text.tipo != MailIndexedSearch.UNKNOWN &&
                    (filtro.text.values != null && filtro.text.values.Length > 0))
                {
                    sValues.Add(filtro.text.tipo, filtro.text.values.ToList());
                }
                if (filtro.status.tipo != MailIndexedSearch.UNKNOWN &&
                    (filtro.status.values != null && filtro.status.values.Length > 0))
                {
                    sValues.Add(filtro.status.tipo, filtro.status.values.Select(e => ((int)e).ToString()).ToList());
                }
                MailLocalService mailService       = new MailLocalService();
                ResultList <MailHeaderExtended> rl = mailService.GetMailsByParams(acc.EmailAddress, folder, parFolder, sValues, start, limit);

                m.Per    = rl.Per;
                m.List   = (rl.List == null) ? null : rl.List.Cast <MailHeader>().ToList() as ICollection <MailHeader>;
                m.Totale = rl.Totale;
            }
            else
            {
                MailServerFacade mailServerFacade = MailServerFacade.GetInstance(acc);
                m = mailServerFacade.MailHeader_ResultList_Fetch(folder, parFolder, start, limit);
            }

            if (m != null && m.List != null)
            {
                CultureInfo ci = CultureInfo.InvariantCulture;
                System.Runtime.Serialization.Json.DataContractJsonSerializer ser =
                    new DataContractJsonSerializer(typeof(Carrier));
                if (acc.IsManaged)
                {
                    listCarrier = m.List.Cast <MailHeaderExtended>().Select(h =>
                    {
                        string mStatus      = "";
                        string destinatario = "";
                        switch (parFolder)
                        {
                        case "I":
                            mStatus      = h.MailRating.ToString();
                            destinatario = h.From;
                            break;

                        case "O":
                        case "AO":
                            mStatus = ((int)h.MailStatus).ToString();
                            //per gestire il semaforo per gli invii da server non PEC
                            if (!acc.IsPec && h.MailStatus == MailStatus.SENT)
                            {
                                mStatus = ((int)MailStatus.AVVENUTA_CONSEGNA).ToString();
                            }
                            destinatario = h.To;
                            break;

                        default:
                            MailUser muser = WebMailClientManager.getAccount();
                            string idnome  = (from f in muser.Folders
                                              where f.Id.ToString() == folder
                                              select f.IdNome).First();
                            string tipo = (from f in muser.Folders
                                           where f.Id.ToString() == folder
                                           select f.TipoFolder).First();
                            switch (idnome)
                            {
                            case "1":
                            case "3":
                                mStatus      = h.MailRating.ToString();
                                destinatario = h.From;
                                break;

                            case "2":
                                mStatus = ((int)h.MailStatus).ToString();
                                //per gestire il semaforo per gli invii da server non PEC
                                if (!acc.IsPec && h.MailStatus == MailStatus.SENT)
                                {
                                    mStatus = ((int)MailStatus.AVVENUTA_CONSEGNA).ToString();
                                }
                                destinatario = h.To;
                                break;

                            default:
                                switch (tipo)
                                {
                                case "E":
                                    mStatus      = h.MailRating.ToString();
                                    destinatario = h.From;
                                    break;

                                case "D":
                                    mStatus = ((int)h.MailStatus).ToString();
                                    //per gestire il semaforo per gli invii da server non PEC
                                    if (!acc.IsPec && h.MailStatus == MailStatus.SENT)
                                    {
                                        mStatus = ((int)MailStatus.AVVENUTA_CONSEGNA).ToString();
                                    }
                                    destinatario = h.To;
                                    break;
                                }
                                break;
                            }
                            break;
                        }

                        ActiveUp.Net.Mail.Address add = ActiveUp.Net.Mail.Parser.ParseAddress(destinatario);
                        if (String.IsNullOrEmpty(add.Name))
                        {
                            destinatario = add.Email;
                        }
                        else
                        {
                            destinatario = System.Text.RegularExpressions.Regex.Replace(add.Name,
                                                                                        "Per conto di:?", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase).Trim();
                            if (destinatario.EndsWith("\""))
                            {
                                destinatario.Replace("\"", "");
                            }
                        }

                        Carrier c = new Carrier
                        {
                            id      = h.UniqueId,
                            from    = destinatario.Replace("\r", "").Replace("\n", "").Replace("\t", "").Replace("\"", "\\\""),
                            date    = h.Date.ToString("dd/MM/yyyy HH:mm:ss", ci),
                            subject = h.Subject.Replace("\"", "\\\""),
                            sStatus = mStatus,
                            mStatus = ((int)h.MailStatus).ToString(),
                            attach  = Convert.ToInt16(h.HasAttachments).ToString(),
                            utente  = ((h.MailStatus == MailStatus.SCARICATA) ? "" : h.Utente),
                            dimen   = h.Dimensione
                        };
                        return(c);
                        //System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        //ser.WriteObject(ms, c);
                        //string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                        //ms.Close();
                        //return jsonString;
                    });
                }
                else
                {
                    listCarrier = m.List.Select(h =>
                    {
                        Carrier c = new Carrier()
                        {
                            id      = h.UniqueId,
                            from    = h.From.Replace("\r", "").Replace("\n", "").Replace("\t", "").Replace("\"", "\\\""),
                            date    = h.Date.ToString("dd/MM/yyyy HH:mm:ss", ci),
                            subject = h.Subject.Replace("\"", "\\\""),
                            mStatus = ((int)MailStatus.UNKNOWN).ToString(),
                            sStatus = "",
                            attach  = ""
                        };
                        return(c);
                        //System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        //ser.WriteObject(ms, c);
                        //string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                        //ms.Close();
                        //return jsonString;
                    });
                }
            }
            else
            {
                model.Message = "Nessun ritrovamento";
                return(this.Request.CreateResponse <CarrierModel>(HttpStatusCode.OK, model));
                //message = "Nessun ritrovamento";
            }

            //StringBuilder sb = new StringBuilder();
            //sb.Append("{\"TotalCount\":\"" + m.Totale.ToString() + "\",");
            //sb.Append("\"Message\":\"" + message + "\"");
            //if (items != null)
            //{
            //    sb.Append(",\"Data\":[" + String.Join(",", items.ToArray()) + "]");
            //}
            //else
            //{
            //    sb.Append(",\"Data\": []");
            //}
            //sb.Append("}");
            model.TotalCount = m.Totale.ToString();
            model.data       = listCarrier.ToList();
            model.success    = "true";
            return(this.Request.CreateResponse <CarrierModel>(HttpStatusCode.OK, model));
            //context.Response.ContentType = "application/json";
            //context.Response.AppendHeader("Content-type", "text/json");
            //context.Response.Write(sb.ToString());
        }
Esempio n. 7
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                Message msg;
                ComunicazioniService comunicazioniService = new ComunicazioniService();
                if (MailMessageComposer.CurrentSendMailExist())
                {
                    msg = MailMessageComposer.CurrentSendMailGet();
                }
                else
                {
                    msg = new Message();
                }

                msg.Subject = SubjectTextBox.Text;
                if (String.IsNullOrEmpty(ToTextBox.Text.Trim()) &&
                    String.IsNullOrEmpty(CCTextBox.Text.Trim()) &&
                    String.IsNullOrEmpty(BCCTextBox.Text.Trim()))
                {
                    ErrorLabel.Text    = "Inserire almeno un destinatario";
                    ErrorLabel.Visible = true;
                    return;
                }
                msg.To.Clear();
                msg.Cc.Clear();
                msg.Bcc.Clear();
                this.addEmailsTo(ToTextBox.Text, msg);
                this.addEmailsCc(CCTextBox.Text, msg);
                this.addEmailCcn(BCCTextBox.Text, msg);
                msg.Date = System.DateTime.Now;
                //mantengo il vecchio testo perché in caso di ErrorEventArgs lo devo ripristinare
                bodyBag = msg.BodyHtml.Text;
                SendMail.Model.BodyChunk bb = new SendMail.Model.BodyChunk();
                string   txt = BodyTextBox.Text;
                string[] lst = txt.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
                foreach (string l in lst)
                {
                    bb.Line.Add(l);
                }
                //inserisco il testo libero in testa a quello preformattato
                HtmlNode newNode = null;
                if (bb.Line.Count != 0)
                {
                    newNode = HtmlNode.CreateNode(bb.getAsHtml());
                }
                HtmlDocument d = new HtmlDocument();
                if (!String.IsNullOrEmpty(PreformattedBody.Text))
                {
                    d.LoadHtml(PreformattedBody.Text);
                }
                if (newNode != null)
                {
                    if (d.DocumentNode.Descendants().Count() != 0)
                    {
                        HtmlNode root = d.DocumentNode.Descendants().SingleOrDefault(x => x.Name.Equals("body", StringComparison.InvariantCultureIgnoreCase));
                        if (root == null)
                        {
                            root = d.DocumentNode.Descendants().FirstOrDefault(x => x.NodeType == HtmlNodeType.Element);
                        }
                        if (root != null)
                        {
                            root.PrependChild(newNode);
                        }
                        else
                        {
                            d.DocumentNode.PrependChild(newNode);
                        }
                    }
                    else
                    {
                        d.DocumentNode.PrependChild(newNode);
                    }
                }
                msg.BodyHtml.Text = d.DocumentNode.InnerHtml;
                //se non sono inclusi gli allegati originali
                if (MailEditabile == true && cbIncludiAllegati.Checked == false)
                {
                    for (int i = 0; i < msg.Attachments.Count; i++)
                    {
                        //rimuovo gli allegati originali
                        if (msg.Attachments[i].ParentMessage != null)
                        {
                            msg.Attachments.RemoveAt(i);
                        }
                    }
                }
                foreach (MimePart mm in msg.Attachments)
                {
                    if (mm.BinaryContent == null || mm.BinaryContent.Length < 10)
                    {
                        if (!String.IsNullOrEmpty(mm.ContentId))
                        {
                            string idAttach = mm.ContentId.Trim(new char[] { '<', '>' });
                            long   idAtt    = -1;
                            if (long.TryParse(idAttach, out idAtt))
                            {
                                ComAllegato all = comunicazioniService
                                                  .LoadAllegatoComunicazioneById(long.Parse(idAttach));
                                mm.BinaryContent = all.AllegatoFile;
                            }
                        }
                    }
                }
                switch (CurrentAction)
                {
                case MailActions.REPLY_TO:
                case MailActions.REPLY_ALL:
                case MailActions.RE_SEND:
                case MailActions.FORWARD:
                    msg.InReplyTo = msg.Id.ToString();
                    break;
                }

                ActiveUp.Net.Mail.DeltaExt.MailUser mailUser = null;
                if (WebMailClientManager.AccountExist())
                {
                    mailUser = WebMailClientManager.getAccount();
                }

                if (mailUser != null)
                {
                    MailServerFacade f = MailServerFacade.GetInstance(mailUser);

                    if (mailUser.IsManaged)
                    {
                        try
                        {
                            SendMail.Model.ComunicazioniMapping.Comunicazioni c =
                                new SendMail.Model.ComunicazioniMapping.Comunicazioni(
                                    SendMail.Model.TipoCanale.MAIL,
                                    this.SottoTitolo,
                                    msg,
                                    MySecurityProvider.CurrentPrincipal.MyIdentity.UserName, 2, "O");
                            if (c.MailComunicazione.MailRefs != null && c.MailComunicazione.MailRefs.Count != 0)
                            {
                                c.RubricaEntitaUsed = (from cont in c.MailComunicazione.MailRefs
                                                       select new SendMail.Model.ComunicazioniMapping.RubrEntitaUsed
                                {
                                    Mail = cont.MailDestinatario,
                                    TipoContatto = cont.TipoRef
                                }).ToList();
                            }

                            comunicazioniService.InsertComunicazione(c);
                        }
                        catch (Exception ex)
                        {
                            ManagedException mex = new ManagedException("Errore nel salvataggio della mail",
                                                                        "MAIL_CMP_002", "", ex.StackTrace, ex);
                            ErrorLog err = new ErrorLog(mex);
                            _log.Error(err);
                            ErrorLabel.Text    = "Errore nell'invio del messaggio";
                            ErrorLabel.Visible = true;
                            return;
                        }
                    }
                    else
                    {
                        f.sendMail(msg);
                    }

                    (this.Page as BasePage).info.AddInfo("Il messaggio e' stato spedito correttamente");
                    MailMessageComposer.CurrentSendMailClear();
                    onMailSent();
                }
                else
                {
                    ((BasePage)this.Page).info.AddInfo("Account inesistente.");
                }
            }
            catch (Exception ex)
            {
                if (ex.GetType() != typeof(ManagedException))
                {
                    _log.Error(new Com.Delta.Logging.Errors.ErrorLog(new ManagedException(ex.Message, "FAC_007", string.Empty, string.Empty, ex)));
                }
                //_log.Error(new Com.Delta.Logging.Errors.ErrorLog("FAC_007", ex, string.Empty, string.Empty, string.Empty));

                MailMessageComposer.CurrentSendMailGet().BodyHtml.Text = bodyBag;
                ErrorLabel.Visible = true;
                ErrorLabel.Text    = ex.Message;
                return;
            }
            Label5.Visible = true;
        }
Esempio n. 8
0
        //public SendMail.Business.Contracts.PrintDirectorTpu.ITpuService TpuService
        //{
        //    get { return SendMail.Business.PrintDirectorTpu.TpuService.Instance; }
        //}

        public Com.Delta.Mail.Facades.IMailServerFacade getMailServerFacade(MailUser user)
        {
            return(MailServerFacade.GetInstance(user));
        }
Esempio n. 9
0
        public HttpResponseMessage SendMailExt(FormDataCollection collection)
        {
            MailModel model = new MailModel();
            string    bodyBag;

            try
            {
                Message msg;
                ComunicazioniService comunicazioniService = new ComunicazioniService();
                if (MailMessageComposer.CurrentSendMailExist())
                {
                    msg = MailMessageComposer.CurrentSendMailGet();
                }
                else
                {
                    msg = new Message();
                }

                msg.Subject = collection["Oggetto"];
                if (String.IsNullOrEmpty(collection["DestinatarioA"]) &&
                    String.IsNullOrEmpty(collection["DestinatarioCC"]) &&
                    String.IsNullOrEmpty(collection["DestinatarioBCC"]))
                {
                    model.message = "Inserire almeno un destinatario";
                    model.success = "false";
                    return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
                }
                msg.To.Clear();
                msg.Cc.Clear();
                msg.Bcc.Clear();
                this.addEmailsTo(collection["DestinatarioA"].Trim(), msg);
                if (!(string.IsNullOrEmpty(collection["DestinatarioCC"])))
                {
                    this.addEmailsCc(collection["DestinatarioCC"], msg);
                }
                if (!(string.IsNullOrEmpty(collection["DestinatarioBCC"])))
                {
                    this.addEmailCcn(collection["DestinatarioBCC"], msg);
                }
                msg.Date = System.DateTime.Now;
                //mantengo il vecchio testo perché in caso di ErrorEventArgs lo devo ripristinare
                bodyBag = msg.BodyHtml.Text;
                SendMail.Model.BodyChunk bb = new SendMail.Model.BodyChunk();
                string   txt = collection["TestoMail"];
                string[] lst = txt.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
                foreach (string l in lst)
                {
                    bb.Line.Add(l);
                }
                //inserisco il testo libero in testa a quello preformattato
                HtmlNode newNode = null;
                if (bb.Line.Count != 0)
                {
                    newNode = HtmlNode.CreateNode(bb.getAsHtml());
                }
                HtmlDocument d = new HtmlDocument();
                if (newNode != null)
                {
                    if (d.DocumentNode.Descendants().Count() != 0)
                    {
                        HtmlNode root = d.DocumentNode.Descendants().SingleOrDefault(x => x.Name.Equals("body", StringComparison.InvariantCultureIgnoreCase));
                        if (root == null)
                        {
                            root = d.DocumentNode.Descendants().FirstOrDefault(x => x.NodeType == HtmlNodeType.Element);
                        }
                        if (root != null)
                        {
                            root.PrependChild(newNode);
                        }
                        else
                        {
                            d.DocumentNode.PrependChild(newNode);
                        }
                    }
                    else
                    {
                        d.DocumentNode.PrependChild(newNode);
                    }
                }
                msg.BodyHtml.Text = d.DocumentNode.InnerHtml;
                //se non sono inclusi gli allegati originali
                if (!(string.IsNullOrEmpty(collection["IncludiAllegati"])) && collection["IncludiAllegati"].ToUpper() == "FALSE")
                {
                    for (int i = 0; i < msg.Attachments.Count; i++)
                    {
                        //rimuovo gli allegati originali
                        if (msg.Attachments[i].ParentMessage != null)
                        {
                            msg.Attachments.RemoveAt(i);
                        }
                    }
                }
                msg.InReplyTo = msg.Id.ToString();
                ActiveUp.Net.Mail.DeltaExt.MailUser mailUser = null;
                if (WebMailClientManager.AccountExist())
                {
                    mailUser = WebMailClientManager.getAccount();
                }

                if (mailUser != null)
                {
                    MailServerFacade f = MailServerFacade.GetInstance(mailUser);
                    msg.From = new Address(mailUser.Casella);
                    if (mailUser.IsManaged)
                    {
                        try
                        {
                            SendMail.Model.ComunicazioniMapping.Comunicazioni c =
                                new SendMail.Model.ComunicazioniMapping.Comunicazioni(
                                    SendMail.Model.TipoCanale.MAIL,
                                    "0",
                                    msg,
                                    MySecurityProvider.CurrentPrincipal.MyIdentity.UserName, 2, "O");
                            if (c.MailComunicazione.MailRefs != null && c.MailComunicazione.MailRefs.Count != 0)
                            {
                                c.RubricaEntitaUsed = (from cont in c.MailComunicazione.MailRefs
                                                       select new SendMail.Model.ComunicazioniMapping.RubrEntitaUsed
                                {
                                    Mail = cont.MailDestinatario,
                                    TipoContatto = cont.TipoRef
                                }).ToList();
                            }
                            if (SessionManager <Dictionary <string, DTOFileUploadResult> > .exist(SessionKeys.DTO_FILE))
                            {
                                Dictionary <string, DTOFileUploadResult> dictDto = SessionManager <Dictionary <string, DTOFileUploadResult> > .get(SessionKeys.DTO_FILE);

                                List <DTOFileUploadResult> dto = (List <DTOFileUploadResult>)dictDto.Values.ToList();
                                c.ComAllegati = new List <ComAllegato>();
                                foreach (DTOFileUploadResult dd in dto)
                                {
                                    ComAllegato allegato = new SendMail.Model.ComunicazioniMapping.ComAllegato();
                                    allegato.AllegatoExt  = dd.Extension;
                                    allegato.AllegatoFile = dd.CustomData;
                                    allegato.AllegatoName = dd.FileName;
                                    allegato.AllegatoTpu  = "";
                                    allegato.FlgInsProt   = AllegatoProtocolloStatus.FALSE;
                                    allegato.FlgProtToUpl = AllegatoProtocolloStatus.FALSE;
                                    c.ComAllegati.Add(allegato);
                                }
                            }
                            foreach (MimePart mm in msg.Attachments)
                            {
                                if (mm.BinaryContent != null || mm.BinaryContent.Length > 10)
                                {
                                    if (c.ComAllegati == null)
                                    {
                                        c.ComAllegati = new List <ComAllegato>();
                                    }

                                    ComAllegato allegato = new SendMail.Model.ComunicazioniMapping.ComAllegato();
                                    FileInfo    info     = new FileInfo(mm.Filename);
                                    allegato.AllegatoExt  = info.Extension;
                                    allegato.AllegatoFile = mm.BinaryContent;
                                    allegato.AllegatoName = mm.Filename;
                                    allegato.AllegatoTpu  = "";
                                    allegato.FlgInsProt   = AllegatoProtocolloStatus.FALSE;
                                    allegato.FlgProtToUpl = AllegatoProtocolloStatus.FALSE;
                                    c.ComAllegati.Add(allegato);
                                }
                            }
                            comunicazioniService.InsertComunicazione(c);
                        }
                        catch (Exception ex)
                        {
                            ManagedException mex = new ManagedException("Errore nel salvataggio della mail",
                                                                        "MAIL_CMP_002", "", ex.StackTrace, ex);
                            ErrorLog err = new ErrorLog(mex);
                            log.Error(err);
                            model.message = "Errore nell'invio del messaggio";
                            model.success = "false";
                            return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
                        }
                    }
                    else
                    {
                        f.sendMail(msg);
                    }

                    model.message = "Email memorizzata correttamente";
                    model.success = "true";
                    return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
                }
                else
                {
                    model.message = "Account inesistente";
                    model.success = "false";
                    return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
                }
            }
            catch (Exception ex)
            {
                if (ex.GetType() != typeof(ManagedException))
                {
                    log.Error(new Com.Delta.Logging.Errors.ErrorLog(new ManagedException(ex.Message, "FAC_007", string.Empty, string.Empty, ex)));
                }

                model.message = ex.Message;
                model.success = "false";
                return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
            }
            model.message = "Email memorizzata correttamente";
            model.success = "true";
            return(this.Request.CreateResponse <MailModel>(HttpStatusCode.OK, model));
        }
Esempio n. 10
0
        public HttpResponseMessage AbilitaFolders(string idemail, string itemselector)
        {
            FoldersSendersModel   model = new FoldersSendersModel();
            SendersFoldersService sfs   = new SendersFoldersService();

            if (string.IsNullOrEmpty(idemail) && string.IsNullOrEmpty(itemselector))
            {
                model.success = "false";
                model.message = "Valori insufficienti nella richiesta";
                this.Request.CreateResponse <FoldersSendersModel>(HttpStatusCode.OK, model);
            }
            try
            {
                // model.FoldersList = listaCartelleNonAbilitate.ToArray();
                string[] folders          = itemselector.Split(';');
                var      foldersAbilitati = sfs.GetFoldersAbilitatiByIdSender(int.Parse(idemail)).Select(z => z.IdNome).ToArray();
                var      ff        = Array.ConvertAll(foldersAbilitati, x => x.ToString());
                var      foldersda = folders.Except(ff);
                var      foldersa  = ff.Except(folders);
                foreach (string s in foldersda)
                {
                    sfs.InsertAbilitazioneFolder(Convert.ToInt32(s), Convert.ToInt32(idemail), 0);
                }
                foreach (string s in foldersa)
                {
                    if (s != "1" && s != "2" && s != "3")
                    {
                        sfs.DeleteAbilitazioneFolder(Convert.ToInt32(s), Convert.ToInt32(idemail));
                    }
                }
                MailUser m = WebMailClientManager.getAccount();
                if (m != null)
                {
                    WebMailClientManager.AccountRemove();
                    MailServerConfigFacade facade = MailServerConfigFacade.GetInstance();
                    MailUser         account      = facade.GetUserByUserId(m.UserId);
                    MailServerFacade serverFacade = MailServerFacade.GetInstance(account);
                    account.Validated = true;
                    WebMailClientManager.SetAccount(account);
                }
                model.success = "true";
                MailLocalService mailLocalService = new MailLocalService();
                CacheManager <List <ActiveUp.Net.Common.DeltaExt.Action> > .set(CacheKeys.FOLDERS_ACTIONS, mailLocalService.GetFolderDestinationForAction());
            }
            catch (Exception ex)
            {
                if (!ex.GetType().Equals(typeof(ManagedException)))
                {
                    ManagedException mEx = new ManagedException("Eccezione nella lettura delle cartelle", "ERR_F005", string.Empty, ex.Message, null);
                    ErrorLogInfo     er  = new ErrorLogInfo(mEx);
                    er.objectID = idemail.ToString();
                    log.Error(er);
                    model.success = "false";
                    model.message = mEx.Message;
                }
                else
                {
                    model.success = "false";
                    model.message = ex.Message;
                }
            }
            return(this.Request.CreateResponse <FoldersSendersModel>(HttpStatusCode.OK, model));
        }