@Override
public void sendTemplateMail(MailTemplate mail, Map<String, Object> context, Tenant tenant) throws MailException {
Optional<Path> resolved = resolveTenantTemplate(mail, tenant);
if (!resolved.isPresent()) {
resolved = resolveDefaultTemplate(mail);
}
if (!resolved.isPresent() || !resolved.get().toFile().isFile()) {
throw new MailException("Mail template not found");
}
try {
String result = templateRenderer.renderAsString(resolved.get(), context);
List<String> parts = Lists.newArrayList(Splitter.on(DELIMITER).trimResults().split(result));
if (parts.size() != 3) {
throw new MailException("Failed to render email. Is the mail extending mail.twig ?");
}
mail.subject(parts.get(0));
if (!Strings.isNullOrEmpty(parts.get(1))) {
mail.text(parts.get(1));
}
if (!Strings.isNullOrEmpty(parts.get(2))) {
mail.html(parts.get(2));
}
mailService.sendEmail(mail);
} catch (TemplateRenderingException e) {
throw new MailException("Failed to render mail template", e);
}
}