private static void MakeAndSendEmail(AvisoMailData data)
        {
            MailMessage message = MakeMessage(data);

            Console.WriteLine($"Enviando e-mail com aconselhamento para {data.TargetEmail}...");
            SendEmail(data, message);
        }
        private static AvisoMailData MakeEmailData(AvisosContext avisosContext, IConfigurationRoot configuration, Asset asset)
        {
            var    smtpConfig  = configuration.GetSection("smtpConfig").Get <SmtpConfig>();
            string targetEmail = configuration["targetEmail"];
            var    mailData    = new AvisoMailData(avisosContext, asset, targetEmail, smtpConfig);

            return(mailData);
        }
 private static void TryToSendEmail(AvisosContext avisosContext, IConfigurationRoot configuration, Asset asset)
 {
     if (HasToSendEMail(avisosContext, asset))
     {
         AvisoMailData mailData = MakeEmailData(avisosContext, configuration, asset);
         MakeAndSendEmail(mailData);
     }
 }
        private static MailMessage MakeMessage(AvisoMailData data)
        {
            MailMessage message = new MailMessage(data.SmtpConfig.Sender, data.TargetEmail);

            if (data.Asset.Price < data.BuyPrice)
            {
                SetBuyMessage(data, message);
            }
            else if (data.Asset.Price > data.SellPrice)
            {
                SetSellMessage(data, message);
            }

            return(message);
        }
        private static void SendEmail(AvisoMailData data, MailMessage message)
        {
            SmtpClient smtpClient = new SmtpClient(data.SmtpConfig.Server, data.SmtpConfig.Port);

            smtpClient.EnableSsl             = true;
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials           = new System.Net.NetworkCredential(data.SmtpConfig.Username, data.SmtpConfig.Password);

            try
            {
                smtpClient.Send(message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erro ao enviar e-mail.", ex.ToString());
            }
        }
 private static void SetSellMessage(AvisoMailData data, MailMessage message)
 {
     message.Subject = "Aconselhamento de Venda de Ativo";
     message.Body    = $"O ativo {data.AssetName} está com um preço de R${data.Asset.Price}. Você definiu que um bom preço para venda desse ativo é de R${data.SellPrice}, portanto é aconselhável que você o venda.";
 }