public EmailContentData GenerateEmailContent(string baseTemplateDirectory) { string templatePath = string.IsNullOrWhiteSpace(_baseTemplateDirectory) ? baseTemplateDirectory : Path.Combine(_baseTemplateDirectory, baseTemplateDirectory); var emailContentData = new EmailContentData(); emailContentData.Content = File.ReadAllText(templatePath); return(emailContentData); }
/// <summary> /// /// </summary> /// <param name="content"></param> /// <returns></returns> public EmailContentData GenerateEmailContent(string content) { if (string.IsNullOrWhiteSpace(content)) { return(new EmailContentData()); } // LR: Prepare the request var mjmlRequest = new MjmlRenderRequest { mjml = content }; // LR: Convert to json payload var renderMjmlPayload = JsonConvert.SerializeObject(mjmlRequest); var request = new RestRequest("render", Method.POST); request.RequestFormat = DataFormat.Json; request.AddJsonBody(renderMjmlPayload); var restResponse = _client.Execute(request); var mjmlRenderResponse = JsonConvert.DeserializeObject <MjmlRenderResponse>(restResponse.Content); var retVal = new EmailContentData(); var errors = new List <string>(); if (restResponse.IsSuccessful == false) { errors.Add("MJML Render request failed"); if (restResponse.ErrorMessage != null) { errors.Add(restResponse.ErrorMessage); } if (restResponse.StatusDescription != null) { errors.Add(restResponse.StatusDescription); } } if (mjmlRenderResponse.Errors != null) { errors.AddRange(mjmlRenderResponse.Errors.Select(s => s.Message)); } retVal.Content = mjmlRenderResponse.Html; retVal.Errors = errors; return(retVal); }
/// <summary> /// Executes the <see cref="IEmailContentProvider.GenerateEmailContent" /> then executes <see cref="TryGenerateFluid" /> using /// <see cref="CultureInfo.CurrentCulture" /> as the CultureInfo. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="content"></param> /// <param name="model"></param> /// <param name="registerType">If you have not registered the type, set this flag to true</param> /// <param name="result"></param> /// <param name="errors">Errors with getting the content or generating the fluid</param> /// <returns></returns> public bool TryGenerate <T>(string content, T model, out string result, out IList <string> errors, bool registerType = false) where T : class { errors = new List <string>(); EmailContentData contentResult = new EmailContentData();; try { contentResult = _emailContentProvider.GenerateEmailContent(content); } catch (Exception ex) { errors.Add(ex.Message); } finally { errors.AddRange(contentResult.Errors ?? Enumerable.Empty <string>()); } if (errors.Any()) { result = string.Empty; return(false); } if (TryGenerateFluid(contentResult.Content, model, out var fluidResult, out var fluidErrors, registerType: registerType) == false) { result = string.Empty; errors = fluidErrors; return(false); } result = fluidResult; errors = Array.Empty <string>(); return(true); }