/**
         * Generate email payload for given alarm and email action.
         * Creates subject, recipients, and body based on action and alarm
         */
        private string GeneratePayload(EmailAction emailAction, AsaAlarmApiModel alarm)
        {
            string emailTemplate = File.ReadAllText(this.servicesConfig.TemplateFolder + EMAIL_TEMPLATE_FILE_NAME);
            string alarmDate     = DateTimeOffset.FromUnixTimeMilliseconds(alarm.DateCreated).ToString(DATE_FORMAT_STRING);

            emailTemplate = emailTemplate.Replace("${subject}", emailAction.GetSubject());
            emailTemplate = emailTemplate.Replace(
                "${alarmDate}",
                DateTimeOffset.FromUnixTimeMilliseconds(alarm.DateCreated).ToString(DATE_FORMAT_STRING));
            emailTemplate = emailTemplate.Replace("${ruleId}", alarm.RuleId);
            emailTemplate = emailTemplate.Replace("${ruleDescription}", alarm.RuleDescription);
            emailTemplate = emailTemplate.Replace("${ruleSeverity}", alarm.RuleSeverity);
            emailTemplate = emailTemplate.Replace("${deviceId}", alarm.DeviceId);
            emailTemplate = emailTemplate.Replace("${notes}", emailAction.GetNotes());
            emailTemplate = emailTemplate.Replace("${alarmUrl}", this.GenerateRuleDetailUrl(alarm.RuleId));

            EmailActionPayload payload = new EmailActionPayload
            {
                Recipients = emailAction.GetRecipients(),
                Subject    = emailAction.GetSubject(),
                Body       = emailTemplate
            };

            return(JsonConvert.SerializeObject(payload));
        }