Exemplo n.º 1
0
        public async Task <ActionResult> SendMail(EmailFormViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";

                using (var message = new MailMessage())
                    using (var smtp = new SmtpClient()
                    {
                        UseDefaultCredentials = true
                    }) {
                        message.To.Add(new MailAddress("*****@*****.**"));              // replace with valid value
                        message.From       = new MailAddress(this.CurrentADUser.EmailAddress); // replace with valid value
                        message.Subject    = "Proposal to add right";
                        message.Body       = string.Format(body, model.FromName, model.FromEmail, model.Message);
                        message.IsBodyHtml = true;

                        smtp.Host      = "naftan.by";
                        smtp.Port      = 25;
                        smtp.EnableSsl = false;

                        try {
                            await smtp.SendMailAsync(message);
                        } catch (Exception ex) {
                            Debug.Write(ex.Message);
                        }

                        return(this.Json(model, JsonRequestBehavior.AllowGet));
                    }
            }
            return(this.Json(model, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> AdHocEmailAction(EmailFormViewModel emailFormViewModel)
        {
            // Handle the action
            await _emailUtilityLogic.HandleAdHocEmail(emailFormViewModel);

            return(RedirectToAction("AdHocEmail", new { status = true }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> SendEmail(EmailFormViewModel form)
        {
            //This is configed to use gmail as domain so for gredentials
            //should be entered a mail.gmail account
            SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");

            smtpClient.Port = 587;
            smtpClient.UseDefaultCredentials = false;
            //For NetworkCredentials enter the account credentials

            /*
             * NetworkCredentials(string userName, string password)
             * userName = [email protected]
             * password = yourpassword
             */
            smtpClient.Credentials    = new System.Net.NetworkCredential("*****@*****.**", "yourpassword");
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.EnableSsl      = true;
            MailMessage mail = new MailMessage();

            //Setting From , To and CC
            mail.From = new MailAddress(form.FromEmail, "News Web Site");
            mail.To.Add(new MailAddress("The mail ON which you want to receive all messages"));
            mail.Subject = $"News Web Site Contact on: \"{form.Subject}\"";
            mail.Body    = $"From: {form.Name};\n\rE-mail: {form.FromEmail}\n\rSubject: {form.Subject};\n\r \n\rMessage: {form.Message}";
            mail.ReplyToList.Add(new MailAddress(form.FromEmail, form.Name));

            await smtpClient.SendMailAsync(mail);

            return(RedirectToAction("Index", "Home"));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Handles email form view model
        /// </summary>
        /// <param name="emailFormViewModel"></param>
        /// <returns></returns>
        public async Task <bool> HandleAdHocEmail(EmailFormViewModel emailFormViewModel)
        {
            var year = _globalConfigs.YearValue;

            var emailAddresses = new List <string>();

            // Add admin email
            if (emailFormViewModel.Admin)
            {
                emailAddresses.AddRange(ApiConstants.AdminEmail);
            }

            // Add student emails
            if (emailFormViewModel.Students)
            {
                var students = await _studentLogic.GetAll(year);

                emailAddresses.AddRange(students.Select(x => x.Email).Where(x => !string.IsNullOrWhiteSpace(x)));
            }

            // Add driver emails
            if (emailFormViewModel.Drivers)
            {
                var drivers = await _driverLogic.GetAll(year);

                emailAddresses.AddRange(drivers.Select(x => x.Email).Where(x => !string.IsNullOrWhiteSpace(x)));
            }

            // Add host emails
            if (emailFormViewModel.Hosts)
            {
                var hosts = await _hostLogic.GetAll(year);

                emailAddresses.AddRange(hosts.Select(x => x.Email).Where(x => !string.IsNullOrWhiteSpace(x)));
            }

            // Add user emails
            if (emailFormViewModel.Users)
            {
                var users = await _userLogic.GetAll();

                emailAddresses.AddRange(users.Select(x => x.Email).Where(x => !string.IsNullOrWhiteSpace(x)));
            }

            // Remove duplicates
            emailAddresses = emailAddresses.Distinct().ToList();

            // Send the email
            await _emailServiceApiApi.SendEmailAsync(emailAddresses, emailFormViewModel.Subject, emailFormViewModel.Message);

            return(true);
        }
        public async Task <IActionResult> SendEmail(EmailFormViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.NotFound());
            }

            await this.emailSender.SendEmailAsync(
                model.From,
                model.From,
                model.To,
                model.Subject,
                model.Content);

            return(this.Redirect(model.ReturnUrl));
        }
Exemplo n.º 6
0
        public ActionResult NotAuthorized()
        {
            //show or not windows auth pop up
            //Response.StatusCode = 401;

            //Response.ClearHeaders();
            //Response.AddHeader("WWW-Authenticate", "Basic");
            //Response.Headers.Remove("WWW-Authenticate");

            //if (!Request.IsLocal && Request.IsAuthenticated) {
            //    return View(model: CurrentADUser.Name);
            //}
            var sender = new EmailFormViewModel()
            {
                FromEmail = this.CurrentADUser.EmailAddress,
                FromName  = this.CurrentADUser.FullName,
            };

            return(this.View(model: sender));
        }
Exemplo n.º 7
0
        public EmailFormViewModel Novo(EmailFormViewModel model)
        {
            if (string.IsNullOrEmpty(model.Sentido))
            {
                model.Sentido = "s";
            }

            if (model.Sentido == "s")
            {
                model.ConfiguracaoContasEmail =
                    new SelectList(_configuracaoContaEmailServico.ObterPorUsuarioId(model.UsuarioId),
                                   "id", "email");
            }
            else
            {
                model.ConfiguracaoContasEmail =
                    new SelectList(_configuracaoContaEmailServico.ObterRegistroEmailEntrada(model.UsuarioId),
                                   "id", "email");
            }

            if (model.FilaId.HasValue)
            {
                var configuracaoContaEmail = _configuracaoContaEmailServico.ObterPorFilaId((int)model.FilaId);
                if (configuracaoContaEmail != null)
                {
                    model.ConfiguracaoContaEmailId = configuracaoContaEmail.Id;
                }
            }
            else
            {
                var configuracaoContaEmail = _configuracaoContaEmailServico.ObterContaPadrao();
                if (configuracaoContaEmail != null)
                {
                    model.ConfiguracaoContaEmailId = configuracaoContaEmail.Id;
                }
            }

            return(model);
        }
        protected List <AtividadeParteEnvolvida> CarregarEnvolvidos(EmailFormViewModel model)
        {
            var envolvidos = new List <AtividadeParteEnvolvida>();

            if (!string.IsNullOrEmpty(model.Remetente))
            {
                if (model.Remetente.Contains(';'))
                {
                    envolvidos.AddRange(from para in model.Remetente.Split(';')
                                        select para.Replace(" ", "")
                                        into email
                                        where !string.IsNullOrEmpty(email)
                                        select new AtividadeParteEnvolvida(email, null, TipoParteEnvolvida.Remetente.Value));
                }
                else
                {
                    envolvidos.Add(new AtividadeParteEnvolvida(model.Remetente.Replace(" ", ""), null,
                                                               TipoParteEnvolvida.Remetente.Value));
                }
            }

            if (!string.IsNullOrEmpty(model.Para))
            {
                if (model.Para.Contains(';'))
                {
                    envolvidos.AddRange(from para in model.Para.Split(';')
                                        select para.Replace(" ", "")
                                        into email
                                        where !string.IsNullOrEmpty(email)
                                        select new AtividadeParteEnvolvida(email, null, TipoParteEnvolvida.Destinatario.Value));
                }
                else
                {
                    envolvidos.Add(new AtividadeParteEnvolvida(model.Para.Replace(" ", ""), null,
                                                               TipoParteEnvolvida.Destinatario.Value));
                }
            }

            if (!string.IsNullOrEmpty(model.Copia))
            {
                if (model.Copia.Contains(';'))
                {
                    envolvidos.AddRange(from cc in model.Copia.Split(';')
                                        select cc.Replace(" ", "")
                                        into email
                                        where !string.IsNullOrEmpty(email)
                                        select new AtividadeParteEnvolvida(email, null, TipoParteEnvolvida.DestinatarioCopia.Value));
                }
                else
                {
                    envolvidos.Add(new AtividadeParteEnvolvida(model.Copia, null,
                                                               TipoParteEnvolvida.DestinatarioCopia.Value));
                }
            }

            if (string.IsNullOrEmpty(model.CopiaOculta))
            {
                return(envolvidos);
            }

            if (model.CopiaOculta.Contains(';'))
            {
                envolvidos.AddRange(from cco in model.CopiaOculta.Split(';')
                                    select cco.Replace(" ", "")
                                    into email
                                    where !string.IsNullOrEmpty(email)
                                    select new AtividadeParteEnvolvida(email, null, TipoParteEnvolvida.DestinatarioOculto.Value));
            }
            else
            {
                envolvidos.Add(new AtividadeParteEnvolvida(model.CopiaOculta, null,
                                                           TipoParteEnvolvida.DestinatarioOculto.Value));
            }

            return(envolvidos);
        }
        protected void ValidarRegrasEmail(EmailFormViewModel model)
        {
            var bValidaPara        = true;
            var bValidaCopia       = true;
            var bValidaCopiaOculta = true;
            var bContemEmail       = false;
            var bValidaDe          = true;

            var sPara        = string.IsNullOrEmpty(model.Para) ? "" : model.Para.Replace(",", ";");
            var sCopia       = string.IsNullOrEmpty(model.Copia) ? "" : model.Copia.Replace(",", ";");
            var sCopiaOculta = string.IsNullOrEmpty(model.CopiaOculta) ? "" : model.CopiaOculta.Replace(",", ";");
            var sCopiaDe     = string.IsNullOrEmpty(model.Remetente) ? "" : model.Remetente.Replace(",", ";");

            if (sPara.Trim() != "")
            {
                foreach (var item in sPara.Split(';'))
                {
                    if (item.Trim() == "")
                    {
                        continue;
                    }

                    if (!EmailValido(item.Replace(" ", "")))
                    {
                        bValidaPara = false;
                    }
                    else
                    {
                        bContemEmail = true;
                    }
                }
            }

            if (!bValidaPara)
            {
                model.ValidationResult.Add(new ValidationError("E-mail no campo (para) inválido!"));
            }


            if (sCopia.Trim() != "")
            {
                foreach (var item in sCopia.Split(';'))
                {
                    if (item.Trim() == "")
                    {
                        continue;
                    }

                    if (!EmailValido(item.Replace(" ", "")))
                    {
                        bValidaCopia = false;
                    }
                    else
                    {
                        bContemEmail = true;
                    }
                }
            }

            if (!bValidaCopia)
            {
                model.ValidationResult.Add(new ValidationError("E-mail no campo (cópia) inválido!"));
            }

            if (sCopiaOculta.Trim() != "")
            {
                foreach (var item in sCopiaOculta.Split(';'))
                {
                    if (item.Trim() == "")
                    {
                        continue;
                    }

                    if (!EmailValido(item.Replace(" ", "")))
                    {
                        bValidaCopiaOculta = false;
                    }
                    else
                    {
                        bContemEmail = true;
                    }
                }
            }

            if (!bValidaCopiaOculta)
            {
                model.ValidationResult.Add(new ValidationError("E-mail no campo (cópia oculta) inválido."));
            }

            if (!bContemEmail)
            {
                model.ValidationResult.Add(
                    new ValidationError("É necessário informar ao menos um endereço de e-mail para envio."));
            }

            if (sCopiaDe.Trim() != "")
            {
                foreach (var item in sCopiaDe.Split(';'))
                {
                    if (item.Trim() == "")
                    {
                        continue;
                    }

                    if (!EmailValido(item.Replace(" ", "")))
                    {
                        bValidaDe = false;
                    }
                    else
                    {
                        bContemEmail = true;
                    }
                }
            }

            if (!bValidaDe)
            {
                model.ValidationResult.Add(new ValidationError("E-mail no campo (De) inválido."));
            }


            if (string.IsNullOrEmpty(model.Assunto))
            {
                model.ValidationResult.Add(new ValidationError("Favor informar o assunto."));
            }
        }
        protected void SalvarImagensTexto(EmailFormViewModel model, string diretorioArquivos)
        {
            try
            {
                var doc1 = new HtmlDocument();
                doc1.LoadHtml(model.Html);

                foreach (var item in doc1.DocumentNode.SelectNodes("//img"))
                {
                    var att = item.Attributes["src"];

                    if (att.Value.Trim().Contains("data:"))
                    {
                        try
                        {
                            var binarioImagem =
                                att.Value.Substring((att.Value.IndexOf(",", StringComparison.Ordinal) + 1),
                                                    ((att.Value.Length - att.Value.IndexOf(",", StringComparison.Ordinal)) - 1));
                            var dirArquivo = SalvarArrayByteParaImagem(binarioImagem, diretorioArquivos,
                                                                       model.EmailIdProvisorio);

                            if (!string.IsNullOrEmpty(dirArquivo))
                            {
                                var fi        = new FileInfo(string.Format("{0}\\{1}", diretorioArquivos, dirArquivo));
                                var contentId = "@" + GetRandomString(10);
                                var novoAnexo = new EmailAnexo(fi.Extension, fi.Name, dirArquivo, fi.Length, true,
                                                               contentId);
                                _anexos.Add(novoAnexo);

                                item.SetAttributeValue("src", @"/Imagem/CorpoEmail/" + novoAnexo.IdProvisorio);
                                StringWriter sw = new StringWriter();
                                doc1.Save(sw);
                                AlternateView htmlView = AlternateView.CreateAlternateViewFromString(sw.ToString(),
                                                                                                     Encoding.GetEncoding("utf-8"), "text/html");
                                model.Html = sw.ToString();
                            }
                        }
                        catch (Exception)
                        {
                            // ignored
                        }
                    }
                    else if (att.Value.Trim().Contains("Imagem/CorpoEmail"))
                    {
                        long idEmailAnexo;
                        long.TryParse(
                            att.Value.Substring((att.Value.IndexOf("/CorpoEmail/", StringComparison.Ordinal) + 12),
                                                ((att.Value.Length - att.Value.IndexOf("/CorpoEmail/", StringComparison.Ordinal)) -
                                                 12)),
                            out idEmailAnexo);

                        if (idEmailAnexo <= 0)
                        {
                            continue;
                        }

                        var emailAnexo = _emailAnexoServico.ObterPorId(idEmailAnexo);

                        if (emailAnexo == null)
                        {
                            continue;
                        }

                        var novoAnexo = new EmailAnexo(emailAnexo.Extensao, emailAnexo.Nome, emailAnexo.Path,
                                                       emailAnexo.Tamanho, emailAnexo.ImagemCorpo, emailAnexo.ContentId);
                        _anexos.Add(novoAnexo);

                        item.SetAttributeValue("src", @"/Imagem/CorpoEmail/" + novoAnexo.IdProvisorio);
                        var sw = new StringWriter();
                        doc1.Save(sw);
                        var htmlView = AlternateView.CreateAlternateViewFromString(sw.ToString(),
                                                                                   Encoding.GetEncoding("utf-8"), "text/html");
                        model.Html = sw.ToString();
                    }
                }
            }
            catch (Exception)
            {
                //   utils.log.gravaLog(Server.MapPath("~/"), ex, "Falha capturada no script (Convert numeroTelefone) " + HttpContext.Current.Request.Url.AbsolutePath);
            }
        }
        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);
        }
Exemplo n.º 12
0
 public EmailFormViewModel AdicionarNew(EmailFormViewModel model)
 {
     return(TratarEmailNew(model));
 }