예제 #1
0
        public string ObterDiretorioAnexoEmail()
        {
            var configuracao = new Configuracao();

            configuracao.SetarUrlEmailAnexos();

            var retorno = _servicoConfiguracao.ObterPorSigla(configuracao.Sigla);

            return(retorno != null ? retorno.Valor : "Endereço de Diretório de Anexo não cadastrado");
        }
예제 #2
0
        public ValidationResult Adicionar(EmailViewModel viewModel, string userId)
        {
            ValidarNovoEmail(viewModel);

            if (!viewModel.ValidationResult.IsValid)
            {
                return(viewModel.ValidationResult);
            }

            var envolvidos = CarregarEnvolvidos(viewModel);

            if (viewModel.EmailPaiId.HasValue)
            {
                var emailPai = _emailServico.ObterEmailCompletoPor((long)viewModel.EmailPaiId, null);
                if (emailPai != null)
                {
                    viewModel.PessoaJuridicaId   = emailPai.Atividade.PessoasJuridicasId;
                    viewModel.PessoaFisicaId     = emailPai.Atividade.PessoasFisicasId;
                    viewModel.PotencialClienteId = emailPai.Atividade.PotenciaisClientesId;
                    viewModel.AtividadePaiId     = emailPai.AtividadeId;
                    viewModel.OcorrenciaId       = emailPai.Atividade.OcorrenciaId;
                }
            }

            _indentificadorEmail = viewModel.IdentificadorEmail == ""
                ? Guid.NewGuid().ToString()
                : viewModel.IdentificadorEmail;
            var configuracao = new Configuracao();

            configuracao.SetarUrlEmailAnexos();
            var diretorioArquivos      = _configuracaoServico.ObterPorSigla(configuracao.Sigla).Valor;
            var configuracaoContaEmail =
                _configuracaoContaEmailServico.ObterPorId((int)viewModel.ConfiguracaoContaEmaild);

            envolvidos.Add(new AtividadeParteEnvolvida(configuracaoContaEmail.Email, null,
                                                       TipoParteEnvolvida.Remetente.Value));

            var htmlCompleto = @"<span style='color:white;mso-themecolor:background1'>IdEmailInicio[EmailId]|" +
                               DateTime.Now + "IdEmailFim <o:p></o:p></span>";

            viewModel.Html = viewModel.Html.Replace("style='pointer-events:none;'", "") + htmlCompleto;
            SalvarImagensTexto(viewModel, diretorioArquivos);
            ProcessarAnexos(viewModel.Anexos, diretorioArquivos);
            viewModel.ValidationResult = _emailServico.AdicionarEmail(userId, null, null, viewModel.OcorrenciaId,
                                                                      viewModel.ContratoId, viewModel.AtendimentoId, viewModel.PessoaFisicaId, viewModel.PessoaJuridicaId,
                                                                      viewModel.PotencialClienteId, viewModel.AtividadePaiId, viewModel.Assunto, null,
                                                                      configuracaoContaEmail.Email, viewModel.Html, viewModel.Texto, null, null, "S", viewModel.Assunto,
                                                                      viewModel.EmailPaiId, configuracaoContaEmail.Id, (int)configuracaoContaEmail.FilasId, envolvidos,
                                                                      _anexos, null, _indentificadorEmail).ValidationResult;
            return(viewModel.ValidationResult);
        }
예제 #3
0
        public IEnumerable <EmailAnexosViewModel> CarregarAnexos(long atividadeId)
        {
            var retorno      = new List <EmailAnexosViewModel>();
            var configuracao = new Configuracao();

            configuracao.SetarUrlEmailAnexos();
            var anexos = _emailAnexoServico.ObterAnexos(atividadeId).Where(c => c.ImagemCorpo == false);

            retorno.AddRange(
                anexos.Select(
                    anexo => new EmailAnexosViewModel(anexo.Id, anexo.Nome, anexo.Path, anexo.Tamanho, anexo.Extensao)));

            return(retorno);
        }
        public EmailFormViewModel TratarEmail(EmailFormViewModel model)
        {
            ValidarRegrasEmail(model);

            if (!model.ValidationResult.IsValid)
            {
                return(model);
            }

            var envolvidos = CarregarEnvolvidos(model);

            if (model.EmailPaiId.HasValue)
            {
                var emailPai = _emailServico.ObterEmailCompletoPor((long)model.EmailPaiId, null);
                if (emailPai != null)
                {
                    model.PessoaJuridicaId = emailPai.Atividade.PessoasJuridicasId;
                    model.PessoaFisicaId   = emailPai.Atividade.PessoasFisicasId;
                    model.AtividadePaiId   = emailPai.AtividadeId;
                }
            }

            var configuracao = new Configuracao();

            configuracao.SetarUrlEmailAnexos();
            var diretorioArquivos = _configuracaoServico.ObterPorSigla(configuracao.Sigla).Valor;

            if (model.ConfiguracaoContaEmailId.HasValue)
            {
                var configuracaoContaEmail =
                    _configuracaoContaEmailServico.ObterPorId((int)model.ConfiguracaoContaEmailId);

                model.Remetente = configuracaoContaEmail.Email;
                model.FilaId    = configuracaoContaEmail.FilasId;
            }

            var htmlCompleto = @"<span style='color:white;mso-themecolor:background1'>IdEmailInicio[EmailId]|" +
                               DateTime.Now + "IdEmailFim <o:p></o:p></span>";

            model.Html = model.Html.Replace("style='pointer-events:none;'", "") + htmlCompleto;
            SalvarImagensTexto(model, diretorioArquivos);
            ProcessarAnexos(model.Anexos, diretorioArquivos);
            var email = _emailServico.Novo(model.UsuarioId, model.UsuarioId, null,
                                           model.OcorrenciaId,
                                           null, model.AtendimentoId, model.PessoaFisicaId, model.PessoaJuridicaId,
                                           null, model.AtividadePaiId, model.Assunto, null,
                                           model.Remetente, model.Html, model.Html, null, null, model.Sentido, model.Assunto,
                                           model.EmailPaiId, model.ConfiguracaoContaEmailId, model.FilaId, envolvidos,
                                           _anexos, model.StatusId, Guid.NewGuid().ToString());

            if (email.ValidationResult.IsValid)
            {
                model.AtividadeId = email.AtividadeId;
                model.EmailId     = email.Id;
            }
            else
            {
                model.ValidationResult = email.ValidationResult;
            }

            return(model);
        }
예제 #5
0
        private static void Run(ConfiguracaoContasEmails configuracaoContaEmail, Container container,
                                IEmailServico emailServico, IConfiguracaoServico configuracaoServico, IAtividadeServico atividadeServico,
                                IFilaServico filaServico, List <EmailRemetenteRegra> emailsSpamFila)
        {
            var dirLog = ConfigurationManager.AppSettings["DiretorioLog"];

            try
            {
                var uIdsExistentes = (List <Email>)emailServico.ObterUids(configuracaoContaEmail.Id);
                var configuracao   = new Configuracao();
                configuracao.SetarUrlEmailAnexos();
                var pathPadrao = configuracaoServico.ObterPorSigla(configuracao.Sigla);

                //using (
                //    var ic = new ImapClient(configuracaoContaEmail.ServidorPop, configuracaoContaEmail.UsuarioEmail,
                //        configuracaoContaEmail.SenhaEmail, AuthMethods.Login,
                //        configuracaoContaEmail.PortaServidorEntrada, true, true))
                //{
                //    ic.SelectMailbox("inbox");
                //    var iDiasAMenos = -3;

                //    var messages =
                //        ic.SearchMessages(
                //            new SearchCondition()
                //            {
                //                Field = SearchCondition.Fields.SentSince,
                //                Value =
                //                    DateTime.Now.AddDays(iDiasAMenos)
                //                        .ToString("dd-MMM-yyyy", new System.Globalization.CultureInfo("en-US"))
                //            }, true,
                //            false);

                //    if (!messages.Any()) return;

                //    var uIdsExistentes = (List<Email>)emailServico.ObterUids(configuracaoContaEmail.Id);
                //    var configuracao = new Configuracao();
                //    configuracao.SetarUrlEmailAnexos();
                //    var pathPadrao = configuracaoServico.ObterPorSigla(configuracao.Sigla);

                //    if (configuracaoContaEmail.FilasId != null)
                //    {
                //        var fila = filaServico.ObterPorId((int)configuracaoContaEmail.FilasId);
                //        configuracaoContaEmail.Fila = fila;
                //    }

                //    //foreach (var message in messages)
                //    //{
                //    //    try
                //    //    {
                //    //        var emailExistente =
                //    //            uIdsExistentes.Find(
                //    //                p =>
                //    //                    p.MessageId == message.Value.MessageID.Replace("<", "").Replace(">", "") &&
                //    //                    p.CriadoEm == message.Value.Date);
                //    //        if (emailExistente != null) continue;

                //    //        var messageCompleta = new MailMessage();

                //    //        try
                //    //        {
                //    //            messageCompleta = ic.GetMessage(message.Value.Uid);
                //    //        }
                //    //        catch (Exception ex)
                //    //        {
                //    //            continue;
                //    //        }

                //    //        var processar = new ProcessamentoEmail(configuracaoContaEmail, messageCompleta, null,
                //    //            emailServico, pathPadrao.Valor, atividadeServico, emailServico, emailsSpamFila);
                //    //        var retorno = processar.ProcessarEmail();

                //    //        if (retorno.IsValid)
                //    //        {
                //    //            Log.ErrorLog("ServicoLeituraEmail", dirLog,
                //    //                "E-mail (" + messageCompleta.Subject + ") processado com sucesso");
                //    //        }
                //    //        else
                //    //        {
                //    //            Log.ErrorLog("ServicoLeituraEmail", dirLog,
                //    //                "E-mail (" + messageCompleta.Subject + ") não processado, erro: " +
                //    //                retorno.Erros.ToString());
                //    //        }
                //    //    }
                //    //    catch (Exception ex)
                //    //    {
                //    //        Log.ErrorLog("ServicoLeituraEmail", dirLog,
                //    //            "E-mail (" + message.Value + ") não processado, erro: " + ex.Message);
                //    //    }
                //    //}

                //}

                new LerViaMailKit(configuracaoContaEmail.ServidorPop, configuracaoContaEmail.PortaServidorEntrada, false, configuracaoContaEmail.UsuarioEmail,
                                  configuracaoContaEmail.SenhaEmail).LerEmail(configuracaoContaEmail, container, emailServico, configuracaoServico, atividadeServico, filaServico, emailsSpamFila, uIdsExistentes, pathPadrao.Valor);
            }
            catch (Exception ex)
            {
                Log.ErrorLog("ServicoLeituraEmail", dirLog, "Erro : " + ex.Message);
            }
        }