public ViewResult FecharPedido(Carrinho carrinho, Pedido pedido) { EmailConfiguracoes email = new EmailConfiguracoes { EscreverArquivo = bool.Parse(ConfigurationManager.AppSettings["Email.EscreverArquivo"] ?? "false") }; EmailPedido emailPedido = new EmailPedido(email); if (!carrinho.ItensCarrinhos.Any()) { ModelState.AddModelError("", "Não foi possivel concluir o pedido, seu carrinho esta vazio."); } if (ModelState.IsValid) { emailPedido.Processarpedido(carrinho, pedido); carrinho.LimparCarrinho(); return View("PedidoConcluido"); } else { return View(pedido); } }
public void Processarpedido(Carrinho carrinho, Pedido pedido) { using (var smtpClient = new SmtpClient()) { smtpClient.EnableSsl = _emailConfiguracoes.UsarSsl; smtpClient.Host = _emailConfiguracoes.ServidorSmtp; smtpClient.Port = _emailConfiguracoes.ServidorPorta; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential( _emailConfiguracoes.Usuario, _emailConfiguracoes.ServidorSmtp); if (_emailConfiguracoes.EscreverArquivo) { smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.PickupDirectoryLocation = _emailConfiguracoes.PastaArquivo; smtpClient.EnableSsl = false; } StringBuilder body = new StringBuilder() .AppendLine("Novo Pedido:") .AppendLine("------------") .AppendLine("Itens"); foreach (var item in carrinho.ItensCarrinhos) { var subtotal = item.Produto.Preco*item.Quantidade; body.AppendFormat("{0} x {1} (SubTotal: {2:c})", item.Quantidade, item.Produto.Nome, subtotal); } body.AppendFormat("Valor total do Pedido: {0:c}", carrinho.ObterValorTotal()) .AppendLine("--------------------") .AppendLine("Enviar para:") .AppendLine(pedido.NomeCliente) .AppendLine(pedido.Email) .AppendLine(pedido.Endereco ?? "") .AppendLine(pedido.Cidade) .AppendLine(pedido.Complemento ?? "") .AppendLine("--------------------") .AppendFormat("Para presente?: {0}", pedido.EmbrulhaPresente ? "Sim" : "Não"); MailMessage mailMessage = new MailMessage(_emailConfiguracoes.De, _emailConfiguracoes.Para, "Novo Pedido", body.ToString() ); if (_emailConfiguracoes.EscreverArquivo) { mailMessage.BodyEncoding = Encoding.GetEncoding("ISO-8859-1"); } smtpClient.Send(mailMessage); } }