public async Task <SendEmailResult> BuildAndSendEmail(EmailSendRequest request) { var trackingId = Guid.NewGuid(); try { var templateData = _templatingService.BuildTemplateData(request.TemplateData); var(subject, html, plainText) = _templatingService.BuildEmailSubjectAndBody(DetermineTemplateToUse(request.TemplateChoice), templateData); var emailSent = await _emailService.BuildAndSendEmail(request.From, request.To, subject, html, plainText); emailSent.TrackingId = trackingId; return(emailSent); } catch (Exception ex) { Console.WriteLine(ex.Message, ex); throw new Exception(ex.Message, ex); } }