}         //

        private static void DoSendEmail(MailMessage emailMsg)
        {
            string emailService = UtilityManager.GetAppKeyValue("emailService", "smtp");

            if (emailService == "mailgun")
            {
                SendEmailViaMailgun(emailMsg);
            }
            else if (emailService == "serviceApi")
            {
                SendEmailViaApi(emailMsg);
            }
            else if (emailService == "smtp")
            {
                SmtpClient smtp = new SmtpClient(UtilityManager.GetAppKeyValue("SmtpHost"))
                {
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential("mparsons", "SomeNewCreds")
                };

                smtp.Send(emailMsg);
                //SmtpMail.Send(email);
            }
            //else if ( emailService == "sendGrid" )
            //{
            //	EmailViaSendGrid( emailMsg );
            //}
            else
            {
                //no service api
                LoggingHelper.DoTrace(2, "***** EmailManager.SendEmail - UNHANDLED EMAIL SERVICE ENCOUNTERED ******");
                return;
            }
        }
Exemple #2
0
        public static bool IsMessageInCache(string message)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                return(false);
            }
            string key = UtilityManager.GenerateMD5String(message);

            try
            {
                if (HttpRuntime.Cache[key] != null)
                {
                    var msgExists = ( string )HttpRuntime.Cache[key];
                    if (msgExists.ToLower() == message.ToLower())
                    {
                        LoggingHelper.DoTrace(7, "LoggingHelper. Duplicate message: " + message);
                        return(true);
                    }
                }
            }
            catch
            {
            }

            return(false);
        }
        private static void SendEmailViaMailgun(MailMessage emailMsg)
        {
            bool   valid         = true;
            string status        = "";
            var    sendingDomain = System.Configuration.ConfigurationManager.AppSettings["MailgunSendingDomainName"];
            var    apiKey        = System.Configuration.ConfigurationManager.AppSettings["MailgunSecretAPIKey"];

            if (string.IsNullOrWhiteSpace(sendingDomain))
            {
                //no service api
                LoggingHelper.DoTrace(2, "***** EmailManager.SendEmailViaMailgun - no email service has been configured");
                return;
            }
            var apiKeyEncoded = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes("api" + ":" + apiKey));
            var url           = "https://api.mailgun.net/v3/" + sendingDomain + "/messages";
            //
            var email = new MailgunEmail()
            {
                BodyHtml = emailMsg.Body,
                From     = emailMsg.From.Address,
                BCC      = emailMsg.Bcc.ToString(),
                Subject  = emailMsg.Subject
            };

            email.To.Add(emailMsg.To.ToString());
            email.CC.Add(emailMsg.CC.ToString());
            if (emailMsg.Attachments != null && emailMsg.Attachments.Count > 0)
            {
                //need to be able to handle attachments
            }
            var parameters = email.GetMultipartFormDataContent();

            //var parameters2 = email.GetContent2();
            //var client2 = new MailgunClient( sendingDomain, apiKey );

            try
            {
                using (var client = new HttpClient())
                {
                    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
                    client.DefaultRequestHeaders.Authorization      = new AuthenticationHeaderValue("Basic", apiKeyEncoded);
                    var result = client.PostAsync(url, parameters).Result;
                    //var result = client.PostAsync( url, parameters2 ).Result;
                    valid  = result.IsSuccessStatusCode;
                    status = valid ? result.Content.ReadAsStringAsync().Result : result.ReasonPhrase;
                }
                if (!valid)
                {
                    LoggingHelper.DoTrace(2, "***** EmailManager.SendEmailViaMailgun - error on send: " + status);
                }
            } catch (Exception ex)
            {
                LoggingHelper.LogError(ex, "SendEmailViaMailgun");
            }
        }
Exemple #4
0
        public static bool IsADuplicateRecentSessionMessage(string message)
        {
            string sessionKey = UtilityManager.GenerateMD5String(message);
            bool   isDup      = false;

            try
            {
                if (HttpContext.Current.Session != null)
                {
                    string msgExists = HttpContext.Current.Session[sessionKey].ToString();
                    if (msgExists.ToLower() == message.ToLower())
                    {
                        LoggingHelper.DoTrace(7, "LoggingHelper. Duplicate message: " + message);
                        return(true);
                    }
                }
            }
            catch
            {
            }
            return(isDup);
        }
Exemple #5
0
        }         //

        public static bool IsADuplicateRequest(string message)
        {
            string sessionKey = GetCurrentSessionId() + "_lastError";
            bool   isDup      = false;

            try
            {
                if (HttpContext.Current.Session != null)
                {
                    string lastAction = HttpContext.Current.Session[sessionKey].ToString();
                    if (lastAction.ToLower() == message.ToLower())
                    {
                        LoggingHelper.DoTrace(7, "ActivityServices. Duplicate message: " + message);
                        return(true);
                    }
                }
            }
            catch
            {
            }
            return(isDup);
        }
        private static void SendEmailViaApi(MailMessage emailMsg)
        {
            string emailServiceUri = UtilityManager.GetAppKeyValue("SendEmailService");

            if (string.IsNullOrWhiteSpace(emailServiceUri))
            {
                //no service api
                LoggingHelper.DoTrace(2, "***** EmailManager.SendEmail - no email service has been configured");
                return;
            }
            //else if ( emailServiceUri.ToLower().Equals( "sendgrid" ) )
            //{
            //	EmailViaSendGrid( emailMsg );
            //	return;
            //}
            //else if ( emailServiceUri.ToLower().Equals( "smtp" ) )
            //{
            //	EmailViaSmtp( emailMsg );
            //	return;
            //}


            var email = new Email()
            {
                Message = emailMsg.Body,
                From    = emailMsg.From.Address,
                To      = emailMsg.To.ToString(),
                CC      = emailMsg.CC.ToString(),
                BCC     = emailMsg.Bcc.ToString(),
                IsHtml  = true,
                Subject = emailMsg.Subject
            };

            var postBody = JsonConvert.SerializeObject(email);

            PostRequest(postBody, emailServiceUri);
        }
        /// <summary>
        /// Sends an email message to the system administrator
        /// </summary>
        /// <param name="emailTo">admin resource responsible for exceptions</param>
        /// <param name="subject">Email subject</param>
        /// <param name="message">Email message</param>
        /// <returns>True id message was sent successfully, otherwise false</returns>
        public static bool NotifyAdmin(string emailTo, string subject, string message)
        {
            char[] delim = new char[1];
            delim[0] = ',';
            string emailFrom = UtilityManager.GetAppKeyValue("systemNotifyFromEmail");
            string cc        = UtilityManager.GetAppKeyValue("systemAdminEmail");

            if (emailTo == "")
            {
                emailTo = cc;
                cc      = "";
            }
            //avoid infinite loop by ensuring this method didn't generate the exception
            if (message.IndexOf("EmailManager.NotifyAdmin") > -1)
            {
                //skip may be error on send
                return(true);
            }
            else
            {
                if (emailTo.ToLower() == cc.ToLower())
                {
                    cc = "";
                }

                message = message.Replace("\r", "<br/>");

                MailMessage email = new MailMessage(emailFrom, emailTo);

                //try to make subject more specific
                //if: workNet Exception encountered, try to insert type
                if (subject.IndexOf("Finder Exception") > -1)
                {
                    subject = FormatExceptionSubject(subject, message);
                }
                subject       = FormHelper.CleanText(subject);
                subject       = System.Text.RegularExpressions.Regex.Replace(subject, @"\r\n?|\n", "");
                email.Subject = subject;
                if (message.IndexOf("Type:") > 0)
                {
                    int startPos = message.IndexOf("Type:");
                    int endPos   = message.IndexOf("Error Message:");
                    if (endPos > startPos)
                    {
                        subject += " - " + message.Substring(startPos, endPos - startPos);
                    }
                }
                if (cc.Trim().Length > 0)
                {
                    cc = cc.Replace(";", ",");
                    //email.CC.Add( CC );

                    string[] ccSplit = cc.Trim().Split(delim);
                    foreach (string item in ccSplit)
                    {
                        if (item.Trim() != "")
                        {
                            string      addr = HandleProxyEmails(item.Trim());
                            MailAddress ma   = new MailAddress(addr);
                            email.CC.Add(ma);
                        }
                    }
                }

                email.Body       = DateTime.Now + "<br>" + message.Replace("\n\r", "<br>");
                email.Body       = email.Body.Replace("\r\n", "<br>");
                email.Body       = email.Body.Replace("\n", "<br>");
                email.Body       = email.Body.Replace("\r", "<br>");
                email.IsBodyHtml = true;
                //email.BodyFormat = MailFormat.Html;
                try
                {
                    //The trace was a just in case, if the send fails, a LogError call will be made anyway. Set to a high level so not shown in prod
                    LoggingHelper.DoTrace(11, "EmailManager.NotifyAdmin: - Admin email was requested:\r\nSubject:" + subject + "\r\nMessage:" + message);
                    if (UtilityManager.GetAppKeyValue("sendEmailFlag", "false") == "TRUE")
                    {
                        DoSendEmail(email);
                    }

                    if (UtilityManager.GetAppKeyValue("logAllEmail", "no") == "yes")
                    {
                        LogEmail(1, email);
                    }
                    return(true);
                } catch (Exception exc)
                {
                    LoggingHelper.LogError("EmailManager.NotifyAdmin(): Error while attempting to send:"
                                           + "\r\nSubject:" + subject + "\r\nMessage:" + message
                                           + "\r\nError message: " + exc.ToString(), false);
                }
            }

            return(false);
        }         //