public bool SendEmail(ILog log, EmailFileTemplate emailTemplate)
        {
            bool   result     = false;
            string methodName = MethodBase.GetCurrentMethod().Name;

            try
            {
                log?.Information(className, methodName, string.Format("Configuration:\n{0}", JsonConvert.SerializeObject(Configurations, Formatting.Indented)));
                log?.Information(className, methodName, string.Format("EmailTemplate:\n{0}", JsonConvert.SerializeObject(emailTemplate, Formatting.Indented)));
                EmailHelper emailHelper = new EmailHelper(Configurations.SmtpSettings);
                emailHelper.Log = log;
                result          = emailHelper.Initialize();
                if (result)
                {
                    Email email = new Email();
                    email.FromEmail = Configurations.SmtpSettings.EmailAddress;
                    email.FromName  = Configurations.SmtpSettings.Name;
                    email.IsHtml    = emailTemplate.IsHtml;
                    if (emailTemplate.ToEmailAddresses != null)
                    {
                        if (emailTemplate.ToEmailAddresses.Count > 0)
                        {
                            email.To.AddRange(emailTemplate.ToEmailAddresses);
                        }
                    }

                    if (emailTemplate.BccEmailAddresses != null)
                    {
                        if (emailTemplate.BccEmailAddresses.Count > 0)
                        {
                            email.BCC.AddRange(emailTemplate.BccEmailAddresses);
                        }
                    }
                    if (emailTemplate.CcEmailAddresses != null)
                    {
                        if (emailTemplate.CcEmailAddresses.Count > 0)
                        {
                            email.BCC.AddRange(emailTemplate.CcEmailAddresses);
                        }
                    }
                    email.Body    = emailTemplate.EmailMessage;
                    email.Subject = emailTemplate.EmailSubject;
                    result        = emailHelper.SendEmail(email);
                }
                emailHelper.Dispose();
            }
            catch (Exception ex)
            {
                log?.Error(className, methodName, ex.ToString());
                result = false;
            }
            return(result);
        }
        public static bool CreateServiceStatusEmail(ServiceInfo info, ILog log = null)
        {
            bool   result     = false;
            string methodName = MethodBase.GetCurrentMethod().Name;

            try
            {
                var repo     = new EmailConfigRepository();
                var template = repo.GetEmailTemplate(SERVICE_STATUS);
                var list     = new List <string>();
                if (template != null)
                {
                    if (template.Subscribers != null)
                    {
                        foreach (var subscriber in template.Subscribers)
                        {
                            if (!string.IsNullOrEmpty(subscriber.EmailAddress))
                            {
                                list.Add(subscriber.EmailAddress);
                            }
                        }
                    }
                    EmailFileTemplate fileTemplate = new EmailFileTemplate();

                    fileTemplate.EmailSubject = template.TemplateSubject
                                                .Replace("{{SERVICE_NAME}}", info.ServiceName)
                                                .Replace("{{SERVICE_STATUS}}", info.ServiceStatus.ToString());

                    fileTemplate.EmailMessage = template.TemplateMessage.Replace("\\n", "\n")
                                                .Replace("{{DATETIME}}", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"))
                                                .Replace("{{SERVICE_NAME}}", info.ServiceName)
                                                .Replace("{{SERVICE_STATUS}}", info.ServiceStatus.ToString());

                    fileTemplate.BccEmailAddresses = list;

                    if (fileTemplate != null)
                    {
                        var json = JsonConvert.SerializeObject(fileTemplate);
                        var file = string.Format(@"{0}\Gateway_{1}.json", EmailManager.Instance.Configurations.EmailFolderPath,
                                                 DateTime.UtcNow.ToString("yyyyMMddHHmmss"));

                        FileHelper.WriteAllText(file, json);
                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                log?.Error(className, methodName, ex.ToString());
                result = false;
            }
            return(result);
        }