public async Task <IHttpActionResult> SendEmail(
            string to,
            string from,
            string subject)
        {
            var content = string.Empty;

            try
            {
                content = await Request.Content.ReadAsStringAsync();
            } catch (Exception e)
            {
                telemetry.TrackException(e);
                return(BadRequest("Failed to get email content"));
            }

            if (string.IsNullOrEmpty(to))
            {
                return(BadRequest("Recipient email is missing (to)"));
            }

            var emailDetails = EmailDetails.CreateEmail(to.Split(',').ToList(), from, subject, content);

            if (!emailDetails.ValidRecipients)
            {
                return(BadRequest("Recipient email is either missing or not in a correct format"));
            }

            if (!emailDetails.ValidSender)
            {
                return(BadRequest("Sender email is either missing or not in a correct format"));
            }

            if (!emailDetails.ValidSubject)
            {
                return(BadRequest("Title exceeds allowed length"));
            }

            try
            {
                await EmailHandler.AddEmailToQueue(emailDetails);
            } catch
            {
                //retry
                await EmailHandler.AddEmailToQueue(emailDetails);
            }

            return(Ok("Email created"));
        }