public async Task ProcessMessages(QueueMessage <MailMessage> message)
        {
            try
            {
                var mailSender  = new GeneralMailSender(MailServer, UserName, Password);
                var mailMessage = new System.Net.Mail.MailMessage(
                    message.Data.From,
                    message.Data.To,
                    message.Data.Subject,
                    message.Data.Body)
                {
                    IsBodyHtml = true,
                    From       = new MailAddress(message.Data.From, "Ciencia Argentina"),
                };

                if (!string.IsNullOrWhiteSpace(message.Data.Cc))
                {
                    mailMessage.CC.Add(message.Data.Cc);
                }
                // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
                await mailSender.SendAsync(mailMessage);

                Console.WriteLine($@"Email sent ({message.Data.Subject}) to: {message.Data.To}");
            }
            catch (Exception e)
            {
                e.Log(null, "Enviando mail key GeneralMailSender");
                var exmsg = $"Enviando mail : {e.Message}\nStackTrace:{e.StackTrace}";
                Console.WriteLine(exmsg, @"Error");
                if (message.DequeueCount < 20)
                {
                    throw;
                }
            }
        }
示例#2
0
        public void ProcessMessages(QueueMessage <MailMessage> message)
        {
            try
            {
                var mailserver = ConfigurationManager.AppSettings["Mail.Server"];
                var username   = ConfigurationManager.AppSettings["Mail.Username"];
                var password   = ConfigurationManager.AppSettings["Mail.Password"];

                var mailSender  = new GeneralMailSender(mailserver, username, password);
                var mailMessage = new System.Net.Mail.MailMessage(
                    message.Data.From, message.Data.To,
                    message.Data.Subject, message.Data.Body)
                {
                    IsBodyHtml = true
                };
                // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
                mailSender.Send(mailMessage);

                Console.WriteLine($"Email sent ({message.Data.Subject}) to: {message.Data.To}");
            }
            catch (Exception e)
            {
                e.Log(null, "Enviando mail key GeneralMailSender");
                var exmsg = $"Enviando mail : {e.Message}\nStackTrace:{e.StackTrace}";
                Console.WriteLine(exmsg, "Error");
                if (message.DequeueCount < 20)
                {
                    throw;
                }
            }
        }
        public static void Log(this Exception exception, HttpContext context, string customMessage, ExceptionAction action = ExceptionAction.Enqueue)
        {
            var url        = "Not available";
            var urlreferer = "Not available";

            if (context != null)
            {
                url = context.Request.Url.ToString();
            }

            if (context != null && context.Request.UrlReferrer != null)
            {
                urlreferer = context.Request.UrlReferrer.ToString();
            }

            var message = new AppException
            {
                CustomMessage = string.IsNullOrWhiteSpace(customMessage) ? "ABServicios.Error" : customMessage,
                Exception     = exception,
                Url           = url,
                UrlReferrer   = urlreferer,
            };

            try
            {
                if (ExceptionAction.Enqueue.Equals(action) || ExceptionAction.SendMailAndEnqueue.Equals(action))
                {
                    AzureQueue.Enqueue(message);
                }
            }
            catch (Exception ex)
            {
                //estamos en la B, error del error
            }

            try
            {
                if (ExceptionAction.SendMail.Equals(action) || ExceptionAction.SendMailAndEnqueue.Equals(action))
                {
                    var mailSender  = new GeneralMailSender("*****@*****.**", "Y@361]96KB{CPiw");
                    var mailMessage = new System.Net.Mail.MailMessage("*****@*****.**", "*****@*****.**", message.CustomMessage, message.Exception + "\n\n" + message.LogMessage + "\n\n" + message.Message + "\n\n" + message.StackTrace + "\n\n" + message.Url + "\n\n" + message.UrlReferrer + "\n\n" + message.InnerExceptionMessage);

                    // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
                    mailSender.Send(mailMessage);
                }
            }
            catch (Exception ex)
            {
                //estamos en la B, error del error
            }

            try
            {
                Telemetry.TrackException(exception);
            }
            catch (Exception ex)
            {
                //estamos en la B, error del error
            }
        }
示例#4
0
        public void WhenSendEmailThenIsSent()
        {
            var mailserver = ConfigurationManager.AppSettings["Mail.Server"];
            var username   = ConfigurationManager.AppSettings["Mail.Username"];
            var password   = ConfigurationManager.AppSettings["Mail.Password"];
            var adminmail  = ConfigurationManager.AppSettings["AdminEmails"];

            var mailSender  = new GeneralMailSender(mailserver, username, password);
            var mailMessage = new System.Net.Mail.MailMessage(username,
                                                              adminmail?.Split(',')[0] ?? throw new InvalidOperationException(), "Limb.Web.Tests", "TEST MESSAGE");

            // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
            mailSender.Send(mailMessage);
        }
示例#5
0
        public void ProcessMessages(QueueMessage <MailMessage> message)
        {
            try
            {
                var mailSender  = new GeneralMailSender("*****@*****.**", "Y@361]96KB{CPiw");
                var mailMessage = new System.Net.Mail.MailMessage(message.Data.From, message.Data.To, message.Data.Subject, message.Data.Body);

                // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
                mailSender.Send(mailMessage);
            }
            catch (Exception e)
            {
                e.LogSilentNoHttp(string.Format("Enviando mail key {0}", "GeneralMailSender"));
                string exmsg = string.Format("Enviando mail : {0}\nStackTrace:{1}", e.Message, e.StackTrace);
                Trace.WriteLine(exmsg, "Error");
                if (message.DequeueCount < 20)
                {
                    throw;
                }
            }
        }
        public static void Log(this Exception exception, HttpContext context, string customMessage, ExceptionAction action = ExceptionAction.Enqueue)
        {
#if DEBUG
            return;
#endif
            var url        = "Not available";
            var urlreferer = "Not available";

            if (context != null)
            {
                url = context.Request.Url.ToString();
            }

            if (context != null && context.Request.UrlReferrer != null)
            {
                urlreferer = context.Request.UrlReferrer.ToString();
            }

            var message = new AppException
            {
                CustomMessage = string.IsNullOrWhiteSpace(customMessage) ? "AtomicLimbs.Error" : customMessage,
                Exception     = exception,
                Url           = url,
                UrlReferrer   = urlreferer,
            };

            try
            {
                if (ExceptionAction.Enqueue.Equals(action) || ExceptionAction.SendMailAndEnqueue.Equals(action))
                {
                    AzureQueue.Enqueue(message);
                }
            }
            catch (Exception)
            {
                //estamos en la B, error del error
            }

            try
            {
                if (ExceptionAction.SendMail.Equals(action) || ExceptionAction.SendMailAndEnqueue.Equals(action))
                {
                    var mailserver = ConfigurationManager.AppSettings["Mail.Server"];
                    var username   = ConfigurationManager.AppSettings["Mail.Username"];
                    var password   = ConfigurationManager.AppSettings["Mail.Password"];
                    var from       = ConfigurationManager.AppSettings["Mail.From"];
                    var adminmail  = ConfigurationManager.AppSettings["AdminEmails"];

                    var mailSender  = new GeneralMailSender(mailserver, username, password);
                    var mailMessage = new System.Net.Mail.MailMessage(from, adminmail?.Split(',')[0] ?? throw new InvalidOperationException(), message.CustomMessage, message.Url + "\n\n" + message.UrlReferrer + "\n\n" + message.Exception + "\n\n" + message.LogMessage + "\n\n" + message.Message + "\n\n" + message.StackTrace + "\n\n" + message.InnerExceptionMessage);

                    // si el mensaje es null significa que el maker controló algunas situaciones y no hay nada para enviar y el mensaje se puede remover de la queue
                    mailSender.Send(mailMessage);
                }
            }
            catch (Exception e)
            {
                //estamos en la B, error del error
            }

            try
            {
                var ai = new TelemetryClient();
                ai.TrackException(exception);
            }
            catch (Exception)
            {
                //estamos en la B, error del error
            }
        }