Here are the examples of the java api org.thymeleaf.TemplateEngine taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
149 Examples
19
Source : FirebaseConfigController.java
with Apache License 2.0
from zhcet-amu
with Apache License 2.0
from zhcet-amu
@Slf4j
@RestController
public clreplaced FirebaseConfigController {
private final FirebaseProperties firebaseProperties;
private final TemplateEngine templateEngine;
private Context firebaseContext;
@Autowired
public FirebaseConfigController(FirebaseProperties firebaseProperties, @Qualifier("extraTemplateEngine") TemplateEngine templateEngine) {
this.firebaseProperties = firebaseProperties;
this.templateEngine = templateEngine;
}
private Context getFirebaseContext() {
if (firebaseContext == null) {
Map<String, Object> payload = new HashMap<>();
payload.put("config", firebaseProperties.getConfig());
firebaseContext = new Context(Locale.getDefault(), payload);
}
return firebaseContext;
}
@Cacheable("firebase-config")
@GetMapping("/js/firebase-config.js")
public ResponseEnreplacedy<String> firebaseConfig() {
String rendered = templateEngine.process("js/firebase-config", getFirebaseContext());
return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(365, TimeUnit.DAYS).sMaxAge(365, TimeUnit.DAYS).cachePublic()).body(rendered);
}
@Cacheable("firebase-messaging-sw")
@GetMapping("/firebase-messaging-sw.js")
public ResponseEnreplacedy<String> firebaseMessagingSw() {
String rendered = templateEngine.process("js/firebase-messaging-sw", getFirebaseContext());
return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(1, TimeUnit.DAYS).sMaxAge(1, TimeUnit.DAYS)).body(rendered);
}
}
19
Source : LinkMailService.java
with Apache License 2.0
from zhcet-amu
with Apache License 2.0
from zhcet-amu
@Slf4j
@Service
public clreplaced LinkMailService {
private static final String LINK_TEMPLATE = "html/link";
private final EmailService emailService;
private final ConfigurationService configurationService;
private final TemplateEngine htmlTemplateEngine;
public LinkMailService(EmailService emailService, ConfigurationService configurationService, @Qualifier("extraTemplateEngine") TemplateEngine htmlTemplateEngine) {
this.emailService = emailService;
this.configurationService = configurationService;
this.htmlTemplateEngine = htmlTemplateEngine;
}
private String normalizeUrl(String url) {
return configurationService.getBaseUrl() + url;
}
private String getUnSubscribeUrl(String recipient) {
return String.format("%s/login/unsubscribe?email=%s&conf=%s", configurationService.getBaseUrl(), recipient, CryptoUtils.getHash(recipient));
}
private String render(String template, Map<String, Object> payload) {
return htmlTemplateEngine.process(template, new Context(Locale.getDefault(), payload));
}
private void normalizeMessage(LinkMessage linkMessage) {
linkMessage.validateSelf();
if (linkMessage.getLink() == null && linkMessage.getRelativeLink() != null)
linkMessage.setLink(normalizeUrl(linkMessage.getRelativeLink()));
}
private String getHtml(LinkMessage linkMessage) {
Map<String, Object> payLoad = new HashMap<>();
payLoad.put("link_message", linkMessage);
return render(LINK_TEMPLATE, payLoad);
}
public void sendEmail(LinkMessage linkMessage, boolean allowUnSubscribe) {
normalizeMessage(linkMessage);
if (allowUnSubscribe && linkMessage.getBcc() == null) {
String unSubscribeUrl = getUnSubscribeUrl(linkMessage.getRecipientEmail());
log.debug("Adding Un-Subscribe Link {}", unSubscribeUrl);
linkMessage.setUnSubscribeUrl(unSubscribeUrl);
}
log.info("Sending Email: {}", linkMessage);
emailService.sendHtmlMail(linkMessage.getRecipientEmail(), linkMessage.getSubject(), getHtml(linkMessage), linkMessage.getBcc());
}
public void sendEmail(LinkMessage linkMessage) {
sendEmail(linkMessage, true);
}
}
19
Source : ServiceWorkerController.java
with Apache License 2.0
from zhcet-amu
with Apache License 2.0
from zhcet-amu
@Slf4j
@RestController
public clreplaced ServiceWorkerController {
private final TemplateEngine templateEngine;
@Autowired
public ServiceWorkerController(@Qualifier("extraTemplateEngine") TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
@Cacheable("sw")
@GetMapping("/sw.js")
public ResponseEnreplacedy<String> serviceWorker() {
ClreplacedPathResource clreplacedPathResource = new ClreplacedPathResource("src/sw.mjs");
String loaded = null;
try {
loaded = IOUtils.toString(clreplacedPathResource.getInputStream(), "UTF-8");
} catch (IOException e) {
log.error("Error loading service worker", e);
}
return ResponseEnreplacedy.ok().contentType(MediaType.parseMediaType("text/javascript")).cacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS)).body(loaded);
}
}
19
Source : MailSend.java
with Apache License 2.0
from yanghaiji
with Apache License 2.0
from yanghaiji
/**
* <p>
*
* </p>
*
* @author Dylan-haiji
* @version 1.0.0
* @since 2020-03-08 14:45
*/
@Slf4j
@EnableConfigurationProperties(value = EmailProperties.clreplaced)
public clreplaced MailSend {
@Autowired(required = false)
private EmailProperties emailProperties;
@Autowired(required = false)
private JavaMailSender mailSender;
@Autowired(required = false)
private TemplateEngine templateEngine;
/**
* <p>
* 发送带有模板的邮件
* </p>
* @version 1.0.0
* @author Dylan-haiji
* @since 2020/3/8
* @param mailDO
* @return void
*/
public void sendTemplateMail(MailDO mailDO) {
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
// 发送人的邮箱
messageHelper.setFrom(emailProperties.getUsername());
// 发给谁 对方邮箱
messageHelper.setTo(mailDO.getEmail());
// 标题
messageHelper.setSubject(mailDO.getreplacedle());
// 使用模板thymeleaf
Context context = new Context(LocaleContextHolder.getLocale());
// 定义模板数据
context.setVariables(mailDO.getAttachment());
// 获取thymeleaf的html模板 指定模板路径
String emailContent = templateEngine.process(mailDO.getTemplateName(), context);
messageHelper.setText(emailContent, true);
// 发送邮件
mailSender.send(mimeMessage);
} catch (MessagingException e) {
log.error("模板邮件发送失败->message:{}", e.getMessage());
throw new RuntimeException("邮件发送失败");
}
}
/**
* <p>
* 发送简单纯文本邮件
* </p>
* @version 1.0.0
* @author Dylan-haiji
* @since 2020/3/8
* @param mail
* @return void
*/
public void sendTextMail(MailDO mail) {
// 建立邮件消息
SimpleMailMessage message = new SimpleMailMessage();
// 发送人的邮箱
message.setFrom(emailProperties.getUsername());
// 标题
message.setSubject(mail.getreplacedle());
// 发给谁 对方邮箱
message.setTo(mail.getEmail());
// 内容
message.setText(mail.getContent());
try {
// 发送
mailSender.send(message);
} catch (MailException e) {
log.error("纯文本邮件发送失败->message:{}", e.getMessage());
throw new RuntimeException("邮件发送失败");
}
}
}
19
Source : MailServiceTest.java
with MIT License
from xkcoding
with MIT License
from xkcoding
/**
* <p>
* 邮件测试
* </p>
*
* @author yangkai.shen
* @date Created in 2018-11-21 13:49
*/
public clreplaced MailServiceTest extends SpringBootDemoEmailApplicationTests {
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
@Autowired
private ApplicationContext context;
/**
* 测试简单邮件
*/
@Test
public void sendSimpleMail() {
mailService.sendSimpleMail("[email protected]", "这是一封简单邮件", "这是一封普通的SpringBoot测试邮件");
}
/**
* 测试HTML邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail() throws MessagingException {
Context context = new Context();
context.setVariable("project", "Spring Boot Demo");
context.setVariable("author", "Yangkai.Shen");
context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
String emailTemplate = templateEngine.process("welcome", context);
mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
}
/**
* 测试HTML邮件,自定义模板目录
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail2() throws MessagingException {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(context);
templateResolver.setCacheable(false);
templateResolver.setPrefix("clreplacedpath:/email/");
templateResolver.setSuffix(".html");
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariable("project", "Spring Boot Demo");
context.setVariable("author", "Yangkai.Shen");
context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
String emailTemplate = templateEngine.process("test", context);
mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
}
/**
* 测试附件邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendAttachmentsMail() throws MessagingException {
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendAttachmentsMail("[email protected]", "这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
}
/**
* 测试静态资源邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendResourceMail() throws MessagingException {
String rscId = "xkcoding";
String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendResourceMail("[email protected]", "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
}
}
19
Source : EmailMessageSender.java
with GNU Lesser General Public License v3.0
from xkcoding
with GNU Lesser General Public License v3.0
from xkcoding
/**
* <p>
* 邮件发送器
* </p>
*
* @author yangkai.shen
* @date Created in 2019/10/11 14:46
*/
@Slf4j
@RequiredArgsConstructor
public clreplaced EmailMessageSender extends AbstractMessageSender<EmailMessage> {
private final JavaMailSender mailSender;
private final TemplateEngine templateEngine;
@Value("${spring.mail.username:''}")
private String username;
/**
* 数据校验
*
* @param message 消息实体
*/
@Override
protected void validate(EmailMessage message) {
if (ObjectUtil.equal(message.getEmailType(), EmailType.SIMPLE)) {
replacedertUtil.isNotEmpty(message.getAttachments(), "简单邮件不支持附件,请更换复杂邮件类型");
replacedertUtil.isNotEmpty(message.getStaticResources(), "简单邮件不支持静态资源,请更换复杂邮件类型");
}
}
/**
* 业务处理
*
* @param message 消息实体
* @return boolean
*/
@Override
protected boolean process(EmailMessage message) {
switch(message.getEmailType()) {
case SIMPLE:
return processSimpleEmail(message);
case MIME:
return processMimeEmail(message);
default:
return false;
}
}
/**
* 处理复杂邮件类型
*
* @param message 邮件内容
* @return boolean
*/
private boolean processMimeEmail(EmailMessage message) {
// 注意邮件发送可能出现异常,注意catch
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("\"" + message.getFrom() + "\" <" + username + ">");
helper.setTo(ArrayUtil.toArray(message.getTos(), String.clreplaced));
helper.setSubject(message.getSubject());
if (StrUtil.isNotBlank(message.getTemplate())) {
// 使用模板生成邮件内容
Context context = new Context();
// 变量设置
message.getParams().forEach(context::setVariable);
String content = templateEngine.process(message.getTemplate(), context);
helper.setText(content, true);
} else {
helper.setText(message.getContent(), true);
}
// 设置抄送人列表
if (CollUtil.isEmpty(message.getCcs())) {
helper.setCc(ArrayUtil.toArray(message.getCcs(), String.clreplaced));
}
// 设置附件
if (CollUtil.isNotEmpty(message.getAttachments())) {
for (EmailAttachment attachment : message.getAttachments()) {
helper.addAttachment(attachment.getAttachmentName(), attachment.getAttachment());
}
}
// 设置静态资源
if (CollUtil.isNotEmpty(message.getStaticResources())) {
for (EmailStaticResource staticResource : message.getStaticResources()) {
helper.addInline(staticResource.getResourceId(), staticResource.getResource());
}
}
mailSender.send(mimeMessage);
return true;
} catch (Exception e) {
log.error("复杂邮件发送异常!", e);
return false;
}
}
/**
* 处理简单邮件类型
*
* @param message 邮件内容
* @return boolean
*/
private boolean processSimpleEmail(EmailMessage message) {
// 注意邮件发送可能出现异常,注意catch
try {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom("\"" + message.getFrom() + "\" <" + username + ">");
simpleMailMessage.setTo(ArrayUtil.toArray(message.getTos(), String.clreplaced));
simpleMailMessage.setSubject(message.getSubject());
simpleMailMessage.setText(message.getContent());
// 设置抄送人列表
if (CollUtil.isEmpty(message.getCcs())) {
simpleMailMessage.setCc(ArrayUtil.toArray(message.getCcs(), String.clreplaced));
}
mailSender.send(simpleMailMessage);
return true;
} catch (Exception e) {
log.error("简单邮件发送异常!", e);
return false;
}
}
/**
* 失败处理
*
* @param message 消息实体
*/
@Override
protected void fail(EmailMessage message) {
log.error("邮件发送失败,当前邮件类型:{},当前收件人列表:{}", message.getEmailType(), JSONUtil.toJsonStr(message.getTos()));
}
}
19
Source : MessageAutoConfiguration.java
with GNU Lesser General Public License v3.0
from xkcoding
with GNU Lesser General Public License v3.0
from xkcoding
@Bean(MessageConstants.BEAN_NAME_EMAIL)
@ConditionalOnMissingBean(name = MessageConstants.BEAN_NAME_EMAIL)
@ConditionalOnProperty(value = "magic.message.email.enabled", havingValue = "true")
public EmailMessageSender emailMessageSender(JavaMailSender mailSender, @Qualifier(MessageConstants.EMAIL_TEMPLATE_ENGINE_BEAN) TemplateEngine templateEngine) {
return new EmailMessageSender(mailSender, templateEngine);
}
19
Source : ThymeleafTest.java
with Mozilla Public License 2.0
from xjc-opensource
with Mozilla Public License 2.0
from xjc-opensource
/**
* 使用 Thymeleaf 渲染 HTML
* @param template HTML模板
* @param params 参数
* @return 渲染后的HTML
*/
public static String render(String template, Map<String, Object> params) {
Context context = new Context();
context.setVariables(params);
TemplateEngine engine = new TemplateEngine();
StringTemplateResolver resolver = new StringTemplateResolver();
engine.setTemplateResolver(resolver);
return engine.process(template, context);
}
19
Source : HttpResourceThymeleaf.java
with Mozilla Public License 2.0
from xjc-opensource
with Mozilla Public License 2.0
from xjc-opensource
/**
* @author ben
* @replacedle: basic
* @Description:
*/
public clreplaced HttpResourceThymeleaf extends HttpResourceFile {
private final TemplateEngine engine = new TemplateEngine();
private final String HTML_FLAG = "html";
private final String HTM_FLAG = "htm";
private boolean isThymeleafFile(String resPath) {
if (resPath == null) {
return false;
}
String suffixName = resPath.substring(resPath.lastIndexOf(".") + 1);
if (suffixName.equalsIgnoreCase(HTML_FLAG) || suffixName.equalsIgnoreCase(HTM_FLAG)) {
return true;
} else {
return false;
}
}
@Override
protected ByteBuf buildRes(String resPath, Map<String, Object> parameters) {
if (!isThymeleafFile(resPath)) {
return super.buildRes(resPath, parameters);
} else {
try {
Context context = new Context();
context.setVariables(parameters);
if (!engine.isInitialized()) {
ClreplacedLoaderTemplateResolver resolver = new ClreplacedLoaderTemplateResolver();
resolver.setPrefix(this.getRootDir());
// 设置不缓存
resolver.setCacheable(false);
engine.setTemplateResolver(resolver);
}
String htmlContext = engine.process(resPath, context);
return Unpooled.copiedBuffer(htmlContext, CharsetUtil.UTF_8);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
}
19
Source : TplConfig.java
with MIT License
from xiaodaojava
with MIT License
from xiaodaojava
/**
* 别的地方想使用templateEngine来处理模板,调用这个方法来获取
* @return
*/
public static TemplateEngine getTemplateEngine() {
final TemplateEngine templateEngine = InitTplConfig.getEngine();
return templateEngine;
}
19
Source : ThfMailContentBuild.java
with Apache License 2.0
from Xiao-Y
with Apache License 2.0
from Xiao-Y
/**
* Thymeleaf邮件模板构建器
*
* @author liuyongtao
* @create 2019-09-29 9:33
*/
public clreplaced ThfMailContentBuild implements MailContentBuild {
@Autowired
private MailTemplateService mailTemplateService;
@Autowired
private TemplateEngine templateEngine;
@Override
public String build(MailTemplateVo mailTemplateVo, Map<String, Object> parameter) throws Exception {
// 模板名称
String templateName = mailTemplateVo.getTemplateName();
if (ToolsUtils.isEmpty(templateName)) {
throw new RuntimeException("邮件模板路径为空。请去 sys_mail_template 表中配置 mailCode:[" + mailTemplateVo.getMailCode() + "] 的模板的 templateName");
}
if (parameter == null) {
parameter = new HashMap<>();
}
// sql 执行结果是否是单行,默认是单行
Boolean singleResult = mailTemplateVo.getSingleResult();
singleResult = singleResult == null ? true : singleResult;
// 数据来源,1-固定邮件,2-SQL查询,3-参数设置,4-混合(2、3都有)
String dataSources = mailTemplateVo.getDataSources();
// 单行结果集
Map<String, Object> result = new HashMap<>();
// 多行结果集
List<Map<String, Object>> resultList = new ArrayList<>();
// 模板参数
Context context = new Context();
switch(dataSources) {
case // 1-固定邮件
MailCst.SYS_FC_DATA_SS_FIXED:
break;
case // 2-SQL查询
MailCst.SYS_FC_DATA_SS_SQL:
if (!singleResult) {
resultList = mailTemplateService.runSQLResultList(parameter, mailTemplateVo.getRunSql());
context.setVariable("root", resultList);
} else {
result = mailTemplateService.runSQLSingleResult(parameter, mailTemplateVo.getRunSql());
context.setVariables(result);
}
break;
case // 3-参数设置
MailCst.SYS_FC_DATA_SS_PRO:
context.setVariables(parameter);
break;
case // 4-混合(2、3都有)
MailCst.SYS_FC_DATA_SS_MIX:
if (!singleResult) {
resultList = mailTemplateService.runSQLResultList(parameter, mailTemplateVo.getRunSql());
context.setVariable("root", resultList);
} else {
result = mailTemplateService.runSQLSingleResult(parameter, mailTemplateVo.getRunSql());
}
// 合并参数,指定参数优先
result.putAll(parameter);
context.setVariables(result);
break;
}
return templateEngine.process(templateName, context);
}
}
19
Source : ThymeleafUtil.java
with Apache License 2.0
from WeBankFinTech
with Apache License 2.0
from WeBankFinTech
@Slf4j
public clreplaced ThymeleafUtil {
public static final String FRONT_APLLICATION_YML = "front-application-yml.tpl";
public static final String NODE_CONFIG_INI = "node-config-ini.tpl";
public static final String NODE_GROUP_GENESIS = "node-group-genesis.tpl";
public static final String NODE_GROUP_INI = "node-group-ini.tpl";
/**
*/
public final static TemplateEngine templateEngine = new TemplateEngine();
static {
final ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();
templateResolver.setOrder(1);
templateResolver.setPrefix("/templates/node/");
templateResolver.setTemplateMode(TemplateMode.TEXT);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(false);
templateEngine.addTemplateResolver(templateResolver);
}
/**
* @param tpl
* @param varMap
*/
public static String generate(String tpl, Map<String, Object> varMap) {
final Context ctx = new Context(Locale.CHINA);
ctx.setVariables(varMap);
String fileContent = templateEngine.process(tpl, ctx);
return fileContent;
}
/**
* @param tpl
* @param array
*/
public static String generate(String tpl, Pair<String, Object>... array) {
return generate(tpl, PairUtil.toMap(array));
}
/**
* @param tpl
* @param varMap
*/
public static void write(String tpl, Writer writer, Map<String, Object> varMap) {
final Context ctx = new Context(Locale.CHINA);
ctx.setVariables(varMap);
templateEngine.process(tpl, ctx, writer);
}
/**
* @param tpl
* @param array
* @return
*/
public static void write(String tpl, Writer writer, Pair<String, Object>... array) {
write(tpl, writer, PairUtil.toMap(array));
}
/**
* node config path: /NODES_ROOT/IP/NODE[index]/
* @param nodeRoot
* @param channelPort
* @param p2pPort
* @param jsonrpcPort
* @param peerList
* @param guomi
* @param chainIdInConfigIni
* @throws IOException
*/
public static void newNodeConfigIni(Path nodeRoot, int channelPort, int p2pPort, int jsonrpcPort, List<TbFront> peerList, boolean guomi, int chainIdInConfigIni) throws IOException {
log.info("newNodeConfigIni nodeRoot:{},channelPort:{}peerList:{}", nodeRoot, channelPort, peerList);
String nodeConfigIni = ThymeleafUtil.generate(ThymeleafUtil.NODE_CONFIG_INI, Pair.of("channelPort", channelPort), Pair.of("p2pPort", p2pPort), Pair.of("jsonrpcPort", jsonrpcPort), Pair.of("nodeList", peerList), Pair.of("guomi", guomi), Pair.of("chainId", chainIdInConfigIni));
if (Files.notExists(nodeRoot)) {
Files.createDirectories(nodeRoot);
}
Files.write(nodeRoot.resolve("config.ini"), nodeConfigIni.getBytes());
}
/**
* group config path: /NODES_ROOT/IP/NODE[index]/conf/
* @param nodeRoot
* @param groupId
* @throws IOException
*/
public static void newGroupConfigs(Path nodeRoot, int groupId, long timestamp, List<String> nodeIdList) throws IOException {
String nodeConfigIni = ThymeleafUtil.generate(ThymeleafUtil.NODE_GROUP_INI);
Files.write(nodeRoot.resolve(String.format("conf/group.%s.ini", groupId)), nodeConfigIni.getBytes());
String nodeGenesis = ThymeleafUtil.generate(ThymeleafUtil.NODE_GROUP_GENESIS, Pair.of("groupId", groupId), Pair.of("timestamp", timestamp), Pair.of("nodeIdList", nodeIdList), Pair.of("sealerCount", CollectionUtils.size(nodeIdList)));
Files.write(nodeRoot.resolve(String.format("conf/group.%s.genesis", groupId)), nodeGenesis.getBytes());
}
/**
* /NODES_ROOT/IP/NODE[index]/application.yml
* @param nodeRoot
* @param encryptType
* @param channelPort
* @param frontPort
* @param webaseSignAddr
* @throws IOException
*/
public static void newFrontConfig(Path nodeRoot, byte encryptType, int channelPort, int frontPort, String webaseSignAddr) throws IOException {
log.info("newFrontConfig nodeRoot:{},frontPort:{}", nodeRoot, frontPort);
String applicationYml = ThymeleafUtil.generate(ThymeleafUtil.FRONT_APLLICATION_YML, Pair.of("encryptType", encryptType), Pair.of("channelPort", channelPort), Pair.of("frontPort", frontPort), Pair.of("webaseSignAddr", webaseSignAddr));
Files.write(nodeRoot.resolve("application.yml"), applicationYml.getBytes());
}
}
19
Source : MailController.java
with Apache License 2.0
from WeBankFinTech
with Apache License 2.0
from WeBankFinTech
/**
* main function is to test mail server config
* using mailServerConfigService and mailService
*/
@Log4j2
@RestController
@RequestMapping("/alert/mail")
public clreplaced MailController {
@Autowired
MailService mailService;
@Autowired
MailServerConfigService mailServerConfigService;
@Autowired
TemplateEngine templateEngine;
public static final String testreplacedle = "WeBase-Node-Manager测试邮件,请勿回复";
/**
* check param empty and send test mail using ReqMailServerConfigParam
* @param toMailAddress
* @param reqMailServerConfigParam
* @return
*/
@PostMapping("/test/{toMailAddress}")
@PreAuthorize(ConstantProperties.HAS_ROLE_ADMIN)
public Object sendTestMail(@PathVariable("toMailAddress") String toMailAddress, @RequestBody ReqMailServerConfigParam reqMailServerConfigParam) {
Instant startTime = Instant.now();
log.info("start sendDefaultMail. startTime:{} toMailAddress:{}", startTime.toEpochMilli(), toMailAddress);
try {
checkParamEmpty(reqMailServerConfigParam);
} catch (NodeMgrException e) {
return new BaseResponse(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
}
try {
String pwdDecoded = new String(Base64.getDecoder().decode(reqMailServerConfigParam.getPreplacedword()));
reqMailServerConfigParam.setPreplacedword(pwdDecoded);
} catch (Exception e) {
log.error("decode preplacedword error:[]", e);
return new BaseResponse(ConstantCode.PreplacedWORD_DECODE_FAIL, e.getMessage());
}
// get configuration from web and refresh JavaMailSender
mailService.refreshJavaMailSenderConfigFromWeb(reqMailServerConfigParam);
String fromMailAddress = reqMailServerConfigParam.getUsername();
Context context = new Context();
// add date in content
SimpleDateFormat formatTool = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
context.setVariable("time", formatTool.format(new Date()));
String emailFinalContent = templateEngine.process("AlertEmailForTest", context);
try {
mailService.sendMailBare(fromMailAddress, toMailAddress, testreplacedle, emailFinalContent);
log.info("end sendDefaultMail. useTime:{}", Duration.between(startTime, Instant.now()).toMillis());
return new BaseResponse(ConstantCode.SUCCESS);
} catch (Exception e) {
log.error("sendDefaultMail error:[]", e);
return new BaseResponse(ConstantCode.SEND_MAIL_ERROR, e.getMessage());
}
}
public void checkParamEmpty(ReqMailServerConfigParam reqMailServerConfigParam) {
log.debug("start checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
if (reqMailServerConfigParam.getServerId() == null || reqMailServerConfigParam.getPort() == null || reqMailServerConfigParam.getAuthentication() == null || StringUtils.isEmpty(reqMailServerConfigParam.getHost())) {
log.error("error checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
throw new NodeMgrException(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
}
if (reqMailServerConfigParam.getAuthentication() == EnableStatus.ON.getValue()) {
if (StringUtils.isEmpty(reqMailServerConfigParam.getUsername()) || StringUtils.isEmpty(reqMailServerConfigParam.getPreplacedword())) {
log.error("error checkParamEmpty in auth reqMailServerConfigParam:{}", reqMailServerConfigParam);
throw new NodeMgrException(ConstantCode.MAIL_SERVER_CONFIG_PARAM_EMPTY);
}
}
log.debug("end checkParamEmpty reqMailServerConfigParam:{}", reqMailServerConfigParam);
}
}
19
Source : SpringbootEmailApplicationTests.java
with Apache License 2.0
from u014427391
with Apache License 2.0
from u014427391
@SpringBootTest
clreplaced SpringbootEmailApplicationTests {
@Autowired
EmailService emailService;
@Resource
TemplateEngine templateEngine;
@Test
void contextLoads() {
}
@Test
void testSendTextMail() {
EmailDto emailDto = new EmailDto();
emailDto.setSendTo("[email protected]");
emailDto.setSubject("发送文本邮件");
emailDto.setContent("测试发送文本邮件!");
emailService.sendTextMail(emailDto);
}
@Test
void testSendHtmlMail() throws MessagingException {
EmailDto emailDto = new EmailDto();
emailDto.setSendTo("[email protected]");
emailDto.setSubject("发送html邮件");
String html = "<html><head><replacedle>email</replacedle></head><body><h1>测试发送html邮件</h1></body></html>";
emailDto.setContent(html);
emailService.sendHtmlMail(emailDto);
}
@Test
void testSendAttachmentMail() throws MessagingException {
String[] filePaths = new String[] { "C:\\Users\\Administrator\\Desktop\\awrrpt_2_22022_22023.html", "C:\\Users\\Administrator\\Desktop\\awr.html" };
EmailDto emailDto = new EmailDto();
emailDto.setSendTo("[email protected]");
emailDto.setSubject("发送附件邮件");
emailDto.setFilePaths(filePaths);
String html = "<html><head><replacedle>email</replacedle></head><body><h1>测试发送附件邮件</h1></body></html>";
emailDto.setContent(html);
emailService.sendAttachmentMail(emailDto);
}
@Test
void testSendInLineImgMail() throws MessagingException {
String inlineImgPath = "C:\\Users\\Administrator\\Desktop\\007Tv3Vmly1ggxvrzrytij31hc0u047h.jpg";
String srcId = "img01";
EmailDto emailDto = new EmailDto();
emailDto.setSendTo("[email protected]");
emailDto.setSubject("发送html内嵌图片邮件");
emailDto.setInlineImgId(srcId);
emailDto.setInlineImgPath(inlineImgPath);
String html = "<html><head><replacedle>email</replacedle></head><body><h1>发送html内嵌图片邮件</h1>" + "<img src=\'cid:" + srcId + "\'></img>" + "</body></html>";
emailDto.setContent(html);
emailService.sendInLineImgMail(emailDto);
}
@Test
void testSendTemplateEmail() throws MessagingException {
Context context = new Context();
context.setVariable("username", "admin");
context.setVariable("id", "123456789");
EmailDto emailDto = new EmailDto();
emailDto.setSendTo("[email protected]");
emailDto.setSubject("发送模板html邮件");
emailDto.setContent(templateEngine.process("test", context));
emailService.sendHtmlMail(emailDto);
}
}
19
Source : EmailUtils.java
with Apache License 2.0
from tmobile
with Apache License 2.0
from tmobile
@Component
public clreplaced EmailUtils {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
private Logger log = LogManager.getLogger(EmailUtils.clreplaced);
public EmailUtils() {
// TODO Auto-generated constructor stub
}
/**
* To send HTML email notification
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to.toArray(new String[to.size()]));
helper.setSubject(subject);
String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME;
// inline image content identifies
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
variables.put(entry.getKey(), entry.getKey());
}
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
javaMailSender.send(message);
} catch (MessagingException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Service account owner %s for service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
} catch (MailSendException exception) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Service account owner %s for service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
}
/**
* To send HTML email notification for internal certs
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendHtmlEmalFromTemplateForInternalCert(String from, String to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_CREATE_CERT;
// inline image content identifies
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
variables.put(entry.getKey(), entry.getKey());
}
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
javaMailSender.send(message);
} catch (MessagingException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
} catch (MailSendException exception) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForInternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
}
/**
* To send HTML email notification for delete
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendHtmlEmalFromTemplateForDelete(String from, String to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_DELETE_CERT;
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
javaMailSender.send(message);
} catch (MessagingException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
} catch (MailSendException exception) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendHtmlEmalFromTemplateForDelete").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
}
/**
* To send HTML email notification for external cert(ceration and renewal)
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendEmailForExternalCert(String from, String to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_EXTERNAL_CERT;
// inline image content identifies
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
variables.put(entry.getKey(), entry.getKey());
}
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : TVaultConstants.EMAIL_EXT_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
javaMailSender.send(message);
} catch (MessagingException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
} catch (MailSendException exception) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendEmailForExternalCert").put(LogMessage.MESSAGE, String.format("Failed to send email notification to " + "User %s for certificate %s for operation = %s", to, variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
}
/**
* To send HTML email notification for delete
*
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendTransferEmail(String from, Map<String, String> variables, String subject) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(variables.get("newOwnerEmail"));
helper.setCc(variables.get("oldOwnerEmail"));
helper.setSubject(subject);
String templateFileName = TVaultConstants.EMAIL_TEMPLATE_NAME_TRANSFER;
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
javaMailSender.send(message);
} catch (MessagingException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendTransferEmail").put(LogMessage.MESSAGE, String.format("Failed to send Transfer email notification to " + "User %s for certificate %s for operation = %s", variables.get("newOwnerEmail"), variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
} catch (MailSendException exception) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()).put(LogMessage.ACTION, "sendTransferEmail").put(LogMessage.MESSAGE, String.format("Failed to send Transfer email notification to " + "User %s for certificate %s for operation = %s", variables.get("newOwnerEmail"), variables.get("certName"), variables.get("operation"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()).build()));
}
}
/**
* To get byte array stream of image resources
* @param imagePath
* @return
* @throws IOException
*/
private ByteArrayResource getImageByteArray(String imagePath) throws IOException {
ClreplacedLoader clreplacedloader = Thread.currentThread().getContextClreplacedLoader();
InputStream is = clreplacedloader.getResourcereplacedtream(imagePath);
BufferedImage bImage = ImageIO.read(is);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(bImage, TVaultConstants.IMAGE_FORMAT_PNG, byteArrayOutputStream);
return new ByteArrayResource(byteArrayOutputStream.toByteArray());
}
/**
* To send HTML email notification
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendIAMSvcAccHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to.toArray(new String[to.size()]));
helper.setSubject(subject);
String templateFileName = IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_NAME;
// inline image content identifies
for (Map.Entry<String, String> entry : IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
variables.put(entry.getKey(), entry.getKey());
}
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
extractImageBytesFromByteArray(helper);
javaMailSender.send(message);
} catch (MessagingException | MailSendException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendIAMSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to IAM Service account owner %s for IAM service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
}
}
/**
* To send HTML email notification
* @param from
* @param to
* @param subject
* @param variables
*/
public void sendAzureSvcAccHtmlEmalFromTemplate(String from, List<String> to, String subject, Map<String, String> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to.toArray(new String[to.size()]));
helper.setSubject(subject);
String templateFileName = AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_NAME;
// inline image content identifies
for (Map.Entry<String, String> entry : AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
variables.put(entry.getKey(), entry.getKey());
}
String content = this.templateEngine.process(templateFileName, new Context(Locale.getDefault(), variables));
helper.setText(content, true);
extractImageBytesFromByteArrayAzureService(helper);
javaMailSender.send(message);
} catch (MessagingException | MailSendException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendAzureSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, String.format("Failed to send email notification to Azure Service account owner %s for Azure service account %s", to.get(0), variables.get("svcAccName"))).put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
}
}
/**
* @param helper
* @throws MessagingException
*/
private void extractImageBytesFromByteArray(MimeMessageHelper helper) throws MessagingException {
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : IAMServiceAccountConstants.IAM_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendIAMSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
}
}
/**
* @param helper
* @throws MessagingException
*/
private void extractImageBytesFromByteArrayAzureService(MimeMessageHelper helper) throws MessagingException {
try {
// add each inline image byte scream
for (Map.Entry<String, String> entry : AzureServiceAccountConstants.AZURE_EMAIL_TEMPLATE_IMAGE_IDS.entrySet()) {
helper.addInline(entry.getKey(), getImageByteArray(entry.getValue()), TVaultConstants.IMAGE_TYPE_PNG);
}
} catch (IOException e) {
log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder().put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER)).put(LogMessage.ACTION, "sendAzureSvcAccHtmlEmalFromTemplate").put(LogMessage.MESSAGE, "Failed to get byte array from resource").put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL)).build()));
}
}
}
19
Source : WebConfig.java
with Apache License 2.0
from tmobile
with Apache License 2.0
from tmobile
@Bean
public TemplateEngine templateEngine() {
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(this.templateResolver());
return templateEngine;
}
19
Source : MailContentBuilderService.java
with Apache License 2.0
from tmobile
with Apache License 2.0
from tmobile
@Service
public clreplaced MailContentBuilderService {
private TemplateEngine templateEngine;
@Autowired
public MailContentBuilderService(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
public String build(final String templateNameOrUrl, final Map<String, String> details) {
return templateEngine.process(templateNameOrUrl, buildContext(details));
}
public String buildPlainTextMail(String mailBody, final Map<String, Object> details) {
for (Map.Entry<String, Object> entry : details.entrySet()) {
mailBody = mailBody.replace("${".concat(entry.getKey()).concat("}"), entry.getValue().toString());
}
return mailBody;
}
private Context buildContext(Map<String, String> details) {
Context context = new Context();
for (Map.Entry<String, String> entry : details.entrySet()) {
context.setVariable(entry.getKey(), entry.getValue());
}
return context;
}
public String getRemoteMailContent(String templateUrl) throws ParseException, IOException {
Map<String, String> headers = Maps.newHashMap();
headers.put("Conent-Type", "text/html");
return PacHttpUtils.getHttpGet(templateUrl, headers);
}
}
19
Source : GoodsHtmlService.java
with Apache License 2.0
from tiancixiong
with Apache License 2.0
from tiancixiong
/**
* @Author: TianCi.Xiong
* @Description: 整合Thymeleaf静态化商品详情页
* @Date: Created in 2019-11-12 13:46
*/
@Service
public clreplaced GoodsHtmlService {
@Autowired
private GoodsService goodsService;
@Autowired
private TemplateEngine templateEngine;
private static final Logger logger = LoggerFactory.getLogger(GoodsHtmlService.clreplaced);
/**
* 创建html页面
*
* @param spuId
*/
public void createHtml(Long spuId) {
PrintWriter writer = null;
try {
// 获取页面数据
Map<String, Object> spuMap = this.goodsService.loadModel(spuId);
// 创建thymeleaf上下文对象
Context context = new Context();
// 把数据放入上下文对象
context.setVariables(spuMap);
// 创建输出流
File file = new File("D:\\JAVA\\nginx-1.12.2\\html\\leyou\\" + spuId + ".html");
writer = new PrintWriter(file);
// 执行页面静态化方法
templateEngine.process("item", context, writer);
} catch (Exception e) {
logger.error("页面静态化出错:{}," + e, spuId);
} finally {
if (writer != null) {
writer.close();
}
}
}
/**
* 新建线程处理页面静态化
*
* @param spuId
*/
public void asyncExcute(Long spuId) {
ThreadUtils.execute(() -> createHtml(spuId));
/*ThreadUtils.execute(new Runnable() {
@Override
public void run() {
createHtml(spuId);
}
});*/
}
/**
* 删除页面
*
* @param id
*/
public void deleteHtml(Long id) {
File file = new File("D:\\JAVA\\nginx-1.12.2\\html\\leyou\\", id + ".html");
file.deleteOnExit();
}
}
19
Source : TemplateUtils.java
with Apache License 2.0
from skalogs
with Apache License 2.0
from skalogs
@Slf4j
public clreplaced TemplateUtils {
private static TemplateUtils INSTANCE = new TemplateUtils();
private TemplateEngine stringTemplateEngine;
private TemplateUtils() {
StringTemplateResolver templateResolver = new StringTemplateResolver();
templateResolver.setTemplateMode(TemplateMode.HTML);
// TODO Cacheable or Not ?
templateResolver.setCacheable(false);
stringTemplateEngine = new TemplateEngine();
stringTemplateEngine.addTemplateResolver(templateResolver);
}
public static TemplateUtils getInstance() {
return INSTANCE;
}
public String process(String template, JsonNode value) {
final Context ctx = new Context();
List<String> fields = getVariables(template);
for (String field : fields) {
if (value.get(field) != null)
ctx.setVariable(field, value.get(field).asText());
else
ctx.setVariable(field, "[empty]");
}
return stringTemplateEngine.process(template, ctx);
}
public String process(String template, Map values) {
final Context ctx = new Context();
List<String> fields = getVariables(template);
for (String field : fields) {
if (values.get(field) != null)
ctx.setVariable(field, values.get(field).toString());
else
ctx.setVariable(field, "[empty]");
}
return stringTemplateEngine.process(template, ctx);
}
private List<String> getVariables(String template) {
// TODO Improve the Grok Pattern to 'forget' the delimiters within the matches (and next remove the substring calls)
final Matcher matcher = Pattern.compile("(\\$\\{(?:.)+?})").matcher(template);
List<String> fields = new ArrayList<>();
while (matcher.find()) {
String var = matcher.group(1);
fields.add(var.substring(2, var.length() - 1));
}
return fields;
}
}
19
Source : MailServiceTest.java
with MIT License
from rstyro
with MIT License
from rstyro
/**
* @author tyro
*/
@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceTest {
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
@Test
public void testSimpleMail() throws Exception {
mailService.sendSimpleMail("[email protected]", "test simple mail", " hello this is simple mail");
}
@Test
public void testHtmlMail() throws Exception {
String content = "<html>\n" + "<body>\n" + " <h3>hello world ! 这是一封html邮件!</h3>\n" + "</body>\n" + "</html>";
mailService.sendHtmlMail("[email protected]", "test simple mail", content);
}
@Test
public void sendAttachmentsMail() {
String filePath = "E:\\lrs\\github\\SSM\\README.txt";
mailService.sendAttachmentsMail("[email protected]", "主题:带附件的邮件", "有附件,请查收!", filePath);
}
@Test
public void sendInlineResourceMail() {
String rscId = "id001";
String content = "<html><body>这是有图片的邮件:<img src=\"cid:" + rscId + "\" ></body></html>";
String imgPath = "E:\\lrs\\pic\\logo.jpg";
mailService.sendInlineResourceMail("[email protected]", "主题:这是有图片的邮件", content, imgPath, rscId);
}
@Test
public void sendTemplateMail() {
// 创建邮件正文
Context context = new Context();
context.setVariable("id", "168");
String emailContent = templateEngine.process("emailTemplate", context);
mailService.sendHtmlMail("[email protected]", "主题:这是模板邮件", emailContent);
}
}
19
Source : MailServiceImplTest.java
with MIT License
from rexlin600
with MIT License
from rexlin600
@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceImplTest {
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
@Test
public void sendSimpleMail() {
mailService.sendSimpleMail("[email protected]", "Simple-Mail", "This is a Simple Mail, Just for Test");
}
@Test
public void sendHtmlMail() {
// html content
String content = "<html>\n" + "<body>\n" + " <h3>Hi, This is a Html Mail, Just for Test</h3>\n" + "</body>\n" + "</html>";
mailService.sendSimpleMail("[email protected]", "Html-Mail", content);
}
@Test
public void sendAttachmentsMail() {
String filePath = "E:\\Git_Workspace\\springboot2-example\\README.md";
mailService.sendAttachmentsMail("[email protected]", "Attachments-Mail", "This is a Attachments Mail, Just for Test", filePath);
}
@Test
public void sendInlineResourceMail() {
String rscId = UUID.randomUUID().toString().replace("-", "");
String content = "<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
String imgPath = "C:\\Users\\hekunlin\\Pictures\\golang.jpg";
mailService.sendInlineResourceMail("[email protected]", "InlineResource-Mail", content, imgPath, rscId);
}
@Test
public void sendTemplateMail() {
// 创建邮件正文
Context context = new Context();
context.setVariable("id", UUID.randomUUID().toString().replace("-", ""));
String emailContent = templateEngine.process("testTemplate", context);
mailService.sendHtmlMail("[email protected]", "Template-Mail", emailContent);
}
}
19
Source : MailServiceTest.java
with MIT License
from qufei1993
with MIT License
from qufei1993
@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced MailServiceTest {
@Autowired
private MailService mailService;
@Resource
TemplateEngine templateEngine;
String to = "[email protected]";
@Test
public void sendTextEmailTest() {
mailService.sendTextMail(to, "发送文本邮件", "hello,这是Spring Boot发送的一封文本邮件!");
}
@Test
public void sendHtmlEmailTest() throws MessagingException {
String content = "<html>" + "<body>" + "<h1 style=\"" + "color:red;" + "\">hello,这是Spring Boot发送的一封HTML邮件</h1>" + "</body></html>";
mailService.sendHtmlMail(to, "发送HTML邮件", content);
}
@Test
public void sendAttachmentEmailTest() throws MessagingException {
String[] filePathList = new String[2];
filePathList[0] = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter4.zip";
filePathList[1] = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter5.zip";
mailService.sendAttachmentMail(to, "发送附件邮件", "hello,这是Spring Boot发送的一封附件邮件!", filePathList);
}
@Test
public void sendHtmlInlinePhotoMailTest() throws MessagingException {
String srcPath = "/Users/qufei/Doreplacedents/study/SpringBoot-WebApi/chapter6/img/pic18.jpg";
String srcId = "pic18";
String content = "<html>" + "<body>" + "<h2>hello,这是Spring Boot发送的一封HTML内嵌图片的邮件</h2>" + "<img src=\'cid:" + srcId + "\'></img>" + "</body></html>";
mailService.sendHtmlInlinePhotoMail(to, "发送图片邮件", content, srcPath, srcId);
}
@Test
public void testTemplateEmailTest() throws MessagingException {
Context context = new Context();
context.setVariable("username", "张三");
context.setVariable("id", "2667395");
String emailContent = templateEngine.process("emailTemplate", context);
mailService.sendHtmlMail(to, "发送模板邮件", emailContent);
}
}
19
Source : EmailUtil.java
with GNU General Public License v3.0
from Programming-With-Love
with GNU General Public License v3.0
from Programming-With-Love
/**
* @author danbai
* @date 2019-10-29 16:26
*/
@Component
public clreplaced EmailUtil {
@Value("${dbys.mail-sender}")
private String sender;
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
/**
* 发信模版
* @param receiver
* @param subject
* @param emailTemplate
* @param dataMap
* @throws Exception
*/
public void sendTemplateMail(String receiver, String subject, String emailTemplate, Map<String, Object> dataMap) throws Exception {
Context context = new Context();
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
context.setVariable(entry.getKey(), entry.getValue());
}
String templateContent = templateEngine.process(emailTemplate, context);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(sender);
helper.setTo(receiver);
helper.setSubject(subject);
helper.setText(templateContent, true);
javaMailSender.send(message);
}
}
19
Source : HTMLReportWriter.java
with Apache License 2.0
from otto-de
with Apache License 2.0
from otto-de
public clreplaced HTMLReportWriter {
private FileService fileService;
ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();
TemplateEngine templateEngine = new TemplateEngine();
public HTMLReportWriter(FileService fileService) {
this.fileService = fileService;
templateResolver.setTemplateMode("HTML");
templateResolver.setPrefix("templates/");
templateResolver.setSuffix(".html");
templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
}
public void writeReport(Report report) throws FileNotFoundException {
fileService.writeHtmlReport(renderReport("report", report.config, report.getFlatResultList()));
// fileService.writeHtmlReport(renderReport("report_wip", report.getFlatResultList()), "report_new.html");
}
public void writeNotFinishedReport(RunStepConfig runStepConfig, JobConfig jobConfig) throws FileNotFoundException {
fileService.writeHtmlReport(renderNotFinishedReport("report_not_finished", runStepConfig, jobConfig));
}
String renderReport(String template, JobConfig config, List<ScreenshotComparisonResult> screenshotComparisonResults) {
final Map<String, Object> variables = prepareVariablesForReportTemplate(screenshotComparisonResults);
variables.put("config", config);
return templateEngine.process(template, new Context(Locale.US, variables));
}
String renderNotFinishedReport(String template, RunStepConfig runStepConfig, JobConfig config) {
Map<String, Object> variables = new HashMap<>();
enrichVariables(variables);
variables.put("config", config);
variables.put("report_dir", runStepConfig.getReportDirectory());
variables.put("working_dir", runStepConfig.getWorkingDirectory());
return templateEngine.process(template, new Context(Locale.US, variables));
}
private Map<String, Object> prepareVariablesForReportTemplate(final List<ScreenshotComparisonResult> screenshotComparisonResults) {
Map<String, Object> variables = new HashMap<>();
List<ScreenshotComparisonResultContext> screenshotComparisonResultContexts = new LinkedList<>();
int lastContextKey = 0;
ScreenshotComparisonResultContext currentContext = null;
for (ScreenshotComparisonResult screenshotComparisonResult : screenshotComparisonResults) {
int context = getContextHash(screenshotComparisonResult);
if (context != lastContextKey) {
lastContextKey = context;
currentContext = new ScreenshotComparisonResultContext(screenshotComparisonResult.contextHash);
screenshotComparisonResultContexts.add(currentContext);
}
currentContext.addResult(screenshotComparisonResult);
}
variables.put("resultContexts", screenshotComparisonResultContexts);
enrichVariables(variables);
return variables;
}
private void enrichVariables(Map<String, Object> variables) {
variables.put("jlineup_version", Utils.readVersion());
variables.put("jlineup_commit", Utils.readCommit());
variables.put("legend_same_rgb", "#" + Integer.toHexString(ImageService.SAME_COLOR).substring(2));
variables.put("legend_look_same_rgb", "#" + Integer.toHexString(ImageService.LOOK_SAME_COLOR).substring(2));
variables.put("legend_anti_alias_rgb", "#" + Integer.toHexString(ImageService.ANTI_ALIAS_DETECTED_COLOR).substring(2));
variables.put("legend_different_rgb", "#" + Integer.toHexString(ImageService.HIGHLIGHT_COLOR).substring(2));
variables.put("legend_different_size_rgb", "#" + Integer.toHexString(ImageService.DIFFERENT_SIZE_COLOR).substring(2));
}
private int getContextHash(final ScreenshotComparisonResult screenshotComparisonResult) {
return screenshotComparisonResult.contextHash;
}
private clreplaced ScreenshotComparisonResultContext {
private final List<ScreenshotComparisonResult> results;
private final ScreenshotContext screenshotContext;
private final int contextHash;
private final Map<Step, String> browsers;
ScreenshotComparisonResultContext(final int contextHash) {
this.results = new LinkedList<>();
this.screenshotContext = fileService.getRecordedContext(contextHash);
this.contextHash = contextHash;
this.browsers = fileService.getBrowsers();
}
void addResult(ScreenshotComparisonResult result) {
results.add(result);
}
@UsedInTemplate
public int getContextHash() {
return contextHash;
}
@UsedInTemplate
public String getUrl() {
return BrowserUtils.buildUrl(screenshotContext.url, screenshotContext.urlSubPath, Collections.emptyMap());
}
@UsedInTemplate
public int getWidth() {
return screenshotContext.deviceConfig.width;
}
@UsedInTemplate
public String getBrowser(String step) {
return browsers.get(Step.valueOf(step));
}
@UsedInTemplate
public String getDeviceInfo() {
StringBuilder sb = new StringBuilder();
DeviceConfig dc = screenshotContext.deviceConfig;
if (dc.isMobile()) {
sb.append(dc.deviceName);
}
if (dc.isGenericMobile()) {
sb.append("\n");
}
if (dc.isGenericMobile() || dc.isDesktop()) {
sb.append("Size: ");
sb.append(dc.width);
sb.append("x");
sb.append(dc.height);
if (dc.pixelRatio != 1.0f) {
sb.append("\nPixel ratio: ");
sb.append(dc.pixelRatio);
}
if (dc.userAgent != null) {
sb.append("\n");
sb.append(dc.userAgent);
}
if (dc.isDesktop() && dc.touch) {
sb.append("\n");
sb.append("Touch enabled");
}
}
return sb.toString();
}
@UsedInTemplate
public List<ScreenshotComparisonResult> getResults() {
return results;
}
@UsedInTemplate
public String getShortenedUrl() {
String shortenedUrl = getUrl();
if (shortenedUrl.length() > 25) {
shortenedUrl = "..." + shortenedUrl.substring(shortenedUrl.lastIndexOf("/"), shortenedUrl.length());
}
return shortenedUrl;
}
@UsedInTemplate
public boolean isSuccess() {
for (ScreenshotComparisonResult result : results) {
if (result.difference > 0)
return false;
}
return true;
}
}
}
19
Source : ThymeleafView.java
with Apache License 2.0
from nutzam
with Apache License 2.0
from nutzam
public clreplaced ThymeleafView extends AbstractPathView {
private static final Log log = Logs.get();
protected TemplateEngine templateEngine;
protected String contentType;
protected String encoding;
public ThymeleafView(TemplateEngine templateEngine, String path, String contentType, String encoding) {
super(path);
this.templateEngine = templateEngine;
this.contentType = contentType;
this.encoding = encoding;
}
@Override
public void render(HttpServletRequest request, HttpServletResponse response, Object value) throws Exception {
String path = evalPath(request, value);
response.setContentType(contentType);
response.setCharacterEncoding(encoding);
try {
Context ctx = createContext(request, value);
WebContext context = new WebContext(request, response, Mvcs.getServletContext(), Locale.getDefault(), ctx.getInnerMap());
templateEngine.process(path, context, response.getWriter());
} catch (Exception e) {
log.error("模板引擎错误", e);
throw e;
}
}
}
19
Source : ThymeleafRender.java
with Apache License 2.0
from noear
with Apache License 2.0
from noear
public clreplaced ThymeleafRender implements Render {
private static ThymeleafRender _global;
public static ThymeleafRender global() {
if (_global == null) {
_global = new ThymeleafRender();
}
return _global;
}
private TemplateEngine _engine = new TemplateEngine();
private Map<String, Object> _sharedVariable = new HashMap<>();
private String _baseUri = "/WEB-INF/view/";
public ThymeleafRender() {
String baseUri = Solon.cfg().get("slon.mvc.view.prefix");
if (Utils.isEmpty(baseUri) == false) {
_baseUri = baseUri;
}
if (Solon.cfg().isDebugMode()) {
forDebug();
} else {
forRelease();
}
try {
Solon.global().shared().forEach((k, v) -> {
setSharedVariable(k, v);
});
} catch (Exception ex) {
EventBus.push(ex);
}
Solon.global().onSharedAdd((k, v) -> {
setSharedVariable(k, v);
});
}
private void forDebug() {
String dirroot = Utils.getResource("/").toString().replace("target/clreplacedes/", "");
File dir = null;
if (dirroot.startsWith("file:")) {
String dir_str = dirroot + "src/main/resources" + _baseUri;
dir = new File(URI.create(dir_str));
if (!dir.exists()) {
dir_str = dirroot + "src/main/webapp" + _baseUri;
dir = new File(URI.create(dir_str));
}
}
try {
if (dir != null && dir.exists()) {
FileTemplateResolver _loader = new FileTemplateResolver();
_loader.setPrefix(dir.getAbsolutePath() + File.separatorChar);
_loader.setTemplateMode(TemplateMode.HTML);
// 必须为false
_loader.setCacheable(false);
_loader.setCharacterEncoding("utf-8");
_loader.setCacheTTLMs(Long.valueOf(3600000L));
_engine.setTemplateResolver(_loader);
} else {
// 如果没有找到文件,则使用发行模式
//
forRelease();
}
} catch (Exception ex) {
EventBus.push(ex);
}
}
private void forRelease() {
ClreplacedLoaderTemplateResolver _loader = new ClreplacedLoaderTemplateResolver(JarClreplacedLoader.global());
_loader.setPrefix(_baseUri);
_loader.setTemplateMode(TemplateMode.HTML);
_loader.setCacheable(true);
_loader.setCharacterEncoding("utf-8");
_loader.setCacheTTLMs(Long.valueOf(3600000L));
_engine.setTemplateResolver(_loader);
}
public void setSharedVariable(String name, Object obj) {
_sharedVariable.put(name, obj);
}
@Override
public void render(Object obj, Context ctx) throws Throwable {
if (obj == null) {
return;
}
if (obj instanceof ModelAndView) {
render_mav((ModelAndView) obj, ctx, () -> ctx.outputStream());
} else {
ctx.output(obj.toString());
}
}
@Override
public String renderAndReturn(Object obj, Context ctx) throws Throwable {
if (obj == null) {
return null;
}
if (obj instanceof ModelAndView) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
render_mav((ModelAndView) obj, ctx, () -> outputStream);
return outputStream.toString();
} else {
return obj.toString();
}
}
public void render_mav(ModelAndView mv, Context ctx, SupplierEx<OutputStream> outputStream) throws Throwable {
if (ctx.contentTypeNew() == null) {
ctx.contentType("text/html;charset=utf-8");
}
if (XPluginImp.output_meta) {
ctx.headerSet("solon.view", "ThymeleafRender");
}
org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
context.setVariables(_sharedVariable);
context.setVariables(mv);
PrintWriter writer = new PrintWriter(outputStream.get());
_engine.process(mv.view(), context, writer);
writer.flush();
}
}
19
Source : MailService.java
with MIT License
from moonlightL
with MIT License
from moonlightL
@Component
@EnableConfigurationProperties(MailProperties.clreplaced)
@Slf4j
public clreplaced MailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private MailProperties mailProperties;
@Autowired
private TemplateEngine templateEngine;
@Autowired
private CommonMap commonMap;
@Async
public void sendEmail(String toEmail, String subject, String content) throws Exception {
Context con = new Context();
con.setVariable("content", content);
String emailtext = templateEngine.process("portal/mail.html", con);
MimeMessage message = this.javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
InternetAddress from = new InternetAddress();
from.setAddress(this.mailProperties.getUsername());
from.setPersonal(commonMap.get("blogName").toString(), "UTF-8");
helper.setFrom(from);
helper.setTo(toEmail);
helper.setSubject(subject);
helper.setText(emailtext, true);
this.javaMailSender.send(message);
log.info("发送邮件内容:{}", content);
}
}
19
Source : EmailService.java
with MIT License
from moonlightL
with MIT License
from moonlightL
/**
* @Author: MoonlightL
* @ClreplacedName: EmailService
* @ProjectName: hexo-boot
* @Description: 邮件相关
* @DateTime: 2020/10/1 11:14 上午
*/
@Component
@Slf4j
public clreplaced EmailService {
@Autowired
private TemplateEngine templateEngine;
@Autowired
private ConfigService configService;
@Async
public void sendEmail(String toEmail, String subject, String content) {
if (StringUtils.isBlank(toEmail)) {
return;
}
String email = this.configService.getConfigValue(ConfigEnum.EMAIL.getName());
if (StringUtils.isBlank(email)) {
log.info("======== sendEmail 邮箱地址未配置 =========");
return;
}
String emailHost = this.configService.getConfigValue(ConfigEnum.EMAIL_HOST.getName());
String username = this.configService.getConfigValue(ConfigEnum.EMAIL_USERNAME.getName());
String preplacedword = this.configService.getConfigValue(ConfigEnum.EMAIL_PreplacedWORD.getName());
if (StringUtils.isBlank(emailHost) || StringUtils.isBlank(username) || StringUtils.isBlank(preplacedword)) {
log.info("======== sendEmail 发送邮件服务器/用户名/密码未配置 =========");
return;
}
try {
JavaMailSender sender = this.getSender(emailHost, username, preplacedword);
Context con = new Context();
con.setVariable("content", content);
String emailTemplate = templateEngine.process("admin/email.html", con);
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(email, this.configService.getConfigValue(ConfigEnum.BLOG_NAME.getName()));
helper.setTo(toEmail);
helper.setSubject(subject);
helper.setText(emailTemplate, true);
sender.send(message);
log.info("发送邮件内容: {}", content);
} catch (Exception e) {
e.printStackTrace();
log.error("发送邮件失败: {}", e.getMessage());
}
}
private JavaMailSender getSender(String host, String username, String preplacedword) {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(host);
sender.setUsername(username);
sender.setPreplacedword(preplacedword);
sender.setDefaultEncoding("Utf-8");
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.starttls.enable", "true");
prop.setProperty("mail.smtp.starttls.required", "true");
prop.setProperty("mail.smtp.port", "465");
prop.setProperty("mail.smtp.socketFactory.port", "465");
prop.setProperty("mail.smtp.socketFactory.fallback", "false");
prop.setProperty("mail.smtp.socketFactory.clreplaced", "javax.net.ssl.SSLSocketFactory");
sender.setJavaMailProperties(prop);
return sender;
}
}
19
Source : ThymeleafViewsRenderer.java
with Apache License 2.0
from micronaut-projects
with Apache License 2.0
from micronaut-projects
private TemplateEngine initializeTemplateEngine() {
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(templateResolver);
return engine;
}
19
Source : GaeInfoServlet.java
with Apache License 2.0
from ludoch
with Apache License 2.0
from ludoch
@SuppressWarnings({ "serial" })
@WebServlet(name = "GAEInfo", description = "GAEInfo: Write info about GAE Standard", urlPatterns = "/")
public clreplaced GaeInfoServlet extends HttpServlet {
private final String[] metaPath = { "/computeMetadata/v1/project/numeric-project-id", "/computeMetadata/v1/project/project-id", "/computeMetadata/v1/instance/zone", "/computeMetadata/v1/instance/service-accounts/default/aliases", "/computeMetadata/v1/instance/service-accounts/default/", // Tokens work - but are a security risk to display
"/computeMetadata/v1/instance/service-accounts/default/scopes" // "/computeMetadata/v1/instance/service-accounts/default/token"
};
final String[] metaServiceAcct = { "/computeMetadata/v1/instance/service-accounts/{account}/aliases", "/computeMetadata/v1/instance/service-accounts/{account}/email", // Tokens work - but are a security risk to display
"/computeMetadata/v1/instance/service-accounts/{account}/scopes" // "/computeMetadata/v1/instance/service-accounts/{account}/token"
};
private final String metadata = "http://metadata.google.internal";
private TemplateEngine templateEngine;
// Use OkHttp from Square as it's quite easy to use for simple fetches.
private final OkHttpClient ok = new OkHttpClient.Builder().readTimeout(500, // Don't dawdle
TimeUnit.MILLISECONDS).writeTimeout(500, TimeUnit.MILLISECONDS).build();
// Setup to pretty print returned json
private final Gson gson = new GsonBuilder().setPrettyPrinting().create();
private final JsonParser jp = new JsonParser();
// Fetch Metadata
String fetchMetadata(String key) throws IOException {
Request request = new Request.Builder().url(metadata + key).addHeader("Metadata-Flavor", "Google").get().build();
Response response = ok.newCall(request).execute();
return response.body().string();
}
String fetchJsonMetadata(String prefix) throws IOException {
Request request = new Request.Builder().url(metadata + prefix).addHeader("Metadata-Flavor", "Google").get().build();
Response response = ok.newCall(request).execute();
// Convert json to prety json
return gson.toJson(jp.parse(response.body().string()));
}
@Override
public void init() {
// Setup ThymeLeaf
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(this.getServletContext());
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
// TTL=20m
templateResolver.setCacheTTLMs(1200000L);
// Cache is set to true by default. Set to false if you want templates to
// be automatically updated when modified.
templateResolver.setCacheable(true);
templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String key;
WebContext ctx = new WebContext(req, resp, getServletContext(), req.getLocale());
resp.setContentType("text/html");
TreeMap<String, String> m = new TreeMap<>();
for (Enumeration<String> e = req.getHeaderNames(); e.hasMoreElements(); ) {
key = e.nextElement();
m.put(key, req.getHeader(key));
}
ctx.setVariable("headers", m);
Cookie[] cookies = req.getCookies();
m = new TreeMap<>();
if (cookies != null && cookies.length != 0) {
for (Cookie co : cookies) {
m.put(co.getName(), co.getValue());
}
}
ctx.setVariable("cookies", m);
Properties properties = System.getProperties();
m = new TreeMap<>();
for (Enumeration e = properties.propertyNames(); e.hasMoreElements(); ) {
key = (String) e.nextElement();
m.put(key, (String) properties.get(key));
}
ctx.setVariable("systemprops", m);
Map<String, String> envVar = System.getenv();
m = new TreeMap<>(envVar);
ctx.setVariable("envvar", m);
// The metadata server is only on a production system
m = new TreeMap<>();
for (String k : metaPath) {
m.put(k, fetchMetadata(k));
}
ctx.setVariable("Metadata", m.descendingMap());
ctx.setVariable("sam", m.descendingMap());
// Recursivly get all info about service accounts -- Note tokens are leftout by default.
ctx.setVariable("rsa", fetchJsonMetadata("/computeMetadata/v1/instance/service-accounts/?recursive=true"));
// Recursivly get all data on Metadata server.
ctx.setVariable("ram", fetchJsonMetadata("/?recursive=true"));
templateEngine.process("index", ctx, resp.getWriter());
}
}
19
Source : TextTemplateEngine.java
with Apache License 2.0
from labsai
with Apache License 2.0
from labsai
@Getter
@Setter
@AllArgsConstructor
public clreplaced TextTemplateEngine {
private TemplateEngine templateEngine;
}
19
Source : JavaScriptTemplateEngine.java
with Apache License 2.0
from labsai
with Apache License 2.0
from labsai
@Getter
@Setter
@AllArgsConstructor
public clreplaced JavaScriptTemplateEngine {
private TemplateEngine templateEngine;
}
19
Source : HtmlTemplateEngine.java
with Apache License 2.0
from labsai
with Apache License 2.0
from labsai
@Getter
@Setter
@AllArgsConstructor
public clreplaced HtmlTemplateEngine {
private TemplateEngine templateEngine;
}
19
Source : ThymeleafTemplateDelegate.java
with Apache License 2.0
from koocyton
with Apache License 2.0
from koocyton
@Override
public String template(Object handleObject, ModelMap modelMap, String templateName) {
String controllerName = handleObject.getClreplaced().getSimpleName();
String templateDirectory = controllerName.toLowerCase().substring(0, controllerName.length() - "handle".length());
templateResolver.setPrefix(this.getClreplaced().getResource("/template/" + templateDirectory).getPath() + "/");
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariables(modelMap);
return engine.process(templateName, context);
}
19
Source : MailServiceTest.java
with MIT License
from jiangsongHB
with MIT License
from jiangsongHB
/**
* <p>
* 邮件测试
* </p>
*
* @package: com.xkcoding.email.service
* @description: 邮件测试
* @author: yangkai.shen
* @date: Created in 2018/11/21 13:49
* @copyright: Copyright (c) 2018
* @version: V1.0
* @modified: yangkai.shen
*/
public clreplaced MailServiceTest extends SpringBootDemoEmailApplicationTests {
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
/**
* 测试简单邮件
*/
@Test
public void sendSimpleMail() {
mailService.sendSimpleMail("[email protected]", "这是一封简单邮件", "这是一封普通的SpringBoot测试邮件");
}
/**
* 测试HTML邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail() throws MessagingException {
Context context = new Context();
context.setVariable("project", "Spring Boot Demo");
context.setVariable("author", "Yangkai.Shen");
context.setVariable("url", "https://github.com/xkcoding/spring-boot-demo");
String emailTemplate = templateEngine.process("welcome", context);
mailService.sendHtmlMail("[email protected]", "这是一封模板HTML邮件", emailTemplate);
}
/**
* 测试附件邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendAttachmentsMail() throws MessagingException {
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendAttachmentsMail("[email protected]", "这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
}
/**
* 测试静态资源邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendResourceMail() throws MessagingException {
String rscId = "xkcoding";
String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
URL resource = ResourceUtil.getResource("static/xkcoding.png");
mailService.sendResourceMail("[email protected]", "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
}
}
19
Source : WordUtil.java
with BSD 3-Clause "New" or "Revised" License
from hxnlyw
with BSD 3-Clause "New" or "Revised" License
from hxnlyw
/**
* word下载到特定位置
*
* @param templateEngine 配置
* @param templateName 模板名称
* @param variables 模板参数集
* @param filePath 下载文件路径
*/
public static void save(TemplateEngine templateEngine, String templateName, Map<String, Object> variables, String filePath) {
File file = new File(filePath);
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
generateDoc(templateEngine, templateName, outputStream, variables);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
19
Source : PdfUtil.java
with BSD 3-Clause "New" or "Revised" License
from hxnlyw
with BSD 3-Clause "New" or "Revised" License
from hxnlyw
/**
* pdf下载到特定位置
*
* @param templateEngine 配置
* @param templateName 模板名称
* @param listVars 模板参数集
* @param filePath 下载文件路径
*/
public static void save(TemplateEngine templateEngine, String templateName, List<Map<String, Object>> listVars, String filePath) {
try (OutputStream out = new FileOutputStream(filePath)) {
generateAll(templateEngine, templateName, out, listVars);
out.flush();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
19
Source : SpringbootMailApplication.java
with MIT License
from huanzi-qch
with MIT License
from huanzi-qch
@RestController
@SpringBootApplication
public clreplaced SpringbootMailApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMailApplication.clreplaced, args);
}
@Autowired
private SpringBootMailService springBootMailService;
@Autowired
private TemplateEngine templateEngine;
@GetMapping("/")
public String index() throws MessagingException {
// 简单邮件
springBootMailService.sendSimpleMail("[email protected]", "Simple Mail", "第一封简单邮件");
// HTML格式邮件
Context context = new Context();
context.setVariable("username", "我的小号");
springBootMailService.sendHtmlMail("[email protected]", "HTML Mail", templateEngine.process("mail/mail", context));
// HTML格式邮件,带附件
Context context2 = new Context();
context2.setVariable("username", "我的小号(带附件)");
ArrayList<File> files = new ArrayList<>();
// File对象
files.add(new File("C:\\Users\\Administrator\\Desktop\\上传测试.txt"));
files.add(new File("C:\\Users\\Administrator\\Desktop\\上传测试2.txt"));
springBootMailService.sendAttachmentsMail("[email protected]", "Attachments Mail", templateEngine.process("mail/attachment", context2), files);
return "欢迎访问 springboot-mail,邮件发送成功!";
}
}
19
Source : TestControllerTest.java
with GNU General Public License v3.0
from hope-for
with GNU General Public License v3.0
from hope-for
@RunWith(SpringRunner.clreplaced)
@SpringBootTest
public clreplaced TestControllerTest {
@Autowired
private EmailService emailService;
@Autowired
private TemplateEngine templateEngine;
@Test
public void test1() {
// for(int i=0;i<=2;i++){
emailService.sendTextEmail("[email protected]", "测试", "收到请回复,over!");
// }
}
@Test
public void test2() {
String content = "<html>\n" + "<body>\n" + " <h3>hello world ! 这是一封html邮件!</h3>\n" + "</body>\n" + "</html>";
emailService.sendHtmlEmali("[email protected]", "测试", content);
}
@Test
public void test3() {
emailService.sendAttachmentsEmail("[email protected]", "测试", "收到请回复,over!", "C:\\Users\\ad182\\Pictures\\image3\\a.jpg");
}
@Test
public void test4() {
String rscId = "neo006";
String content = "<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
String imgPath = "C:\\Users\\ad182\\Pictures\\image3\\a.jpg";
emailService.sendStaticResourcesEmail("[email protected]", "测试", content, imgPath, rscId);
}
@Test
public void test5() {
// 创建邮件正文
org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
context.setVariable("id", "006");
String emailContent = templateEngine.process("emailTemplate", context);
emailService.sendHtmlEmali("[email protected]", "主题:这是模板邮件", emailContent);
}
}
19
Source : WordprocessingMLThymeleafTemplate.java
with Apache License 2.0
from hiwepy
with Apache License 2.0
from hiwepy
public void setEngine(TemplateEngine engine) {
this.engine = engine;
}
19
Source : EmailUtils.java
with MIT License
from gzmuSoft
with MIT License
from gzmuSoft
/**
* @author replacedoul
* @version 1.0
* @date 2019-05-21 14:45
*/
@Component
@Async
@Slf4j
public clreplaced EmailUtils {
private final JavaMailSender javaMailSender;
private final EmailConfig emailConfig;
private final TemplateEngine templateEngine;
public EmailUtils(JavaMailSender javaMailSender, EmailConfig emailConfig, TemplateEngine templateEngine) {
this.javaMailSender = javaMailSender;
this.emailConfig = emailConfig;
this.templateEngine = templateEngine;
}
/**
* 简单文字邮件发送
*
* @param toEmail 接收者邮箱
* @param subject 邮件主题
* @param content 邮件内容
*/
public void sendSimpleMail(String toEmail, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(emailConfig.getUsername());
message.setTo(toEmail);
message.setSubject(subject);
message.setText(content);
javaMailSender.send(message);
}
/**
* 发送带模板的邮件
*
* @param toEmail 接收者邮箱
* @param type 邮件类型
* @param subject 邮件主题
* @param template 邮件模板名称(默认资源路径下)
* @param variables 模板内变量集合
*/
public Future<String> sendTemplateMail(String toEmail, String type, String subject, String template, Map<String, Object> variables) {
MimeMessage message = javaMailSender.createMimeMessage();
Context context = new Context();
variables.forEach(context::setVariable);
context.setVariable("type", type);
String content = templateEngine.process(template, context);
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(emailConfig.getUsername());
messageHelper.setTo(toEmail);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
javaMailSender.send(message);
log.debug("向 {} 发送 {} 邮件成功", toEmail, type);
return new AsyncResult<>("邮件发送成功");
} catch (MessagingException e) {
e.printStackTrace();
log.warn("向 {} 发送 {} 邮件失败", toEmail, type);
return new AsyncResult<>("邮件发送失败");
}
}
}
19
Source : TemplateResolver.java
with Apache License 2.0
from gravitee-io
with Apache License 2.0
from gravitee-io
/**
* @author David BRreplacedELY (david.brreplacedely at graviteesource.com)
* @author replacedouan COMPIEGNE (replacedouan.compiegne at graviteesource.com)
* @author GraviteeSource Team
*/
public clreplaced TemplateResolver extends AbstractConfigurableTemplateResolver {
private ConcurrentMap<String, StringTemplateResource> templates = new ConcurrentHashMap<>();
private ITemplateResolver defaultTemplateResolver = defaultTemplateResolver();
private TemplateEngine templateEngine;
@Override
protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {
if (templates.containsKey(template)) {
return templates.get(template);
}
String fallbackTemplate = template.replaceFirst(".*#", "");
return defaultTemplateResolver.resolveTemplate(configuration, ownerTemplate, fallbackTemplate, templateResolutionAttributes).getTemplateResource();
}
public void addForm(Form form) {
templates.put(getTemplateKey(form), new StringTemplateResource(form.getContent()));
templateEngine.getCacheManager().clearAllCaches();
}
public void removeForm(Form form) {
templates.remove(getTemplateKey(form));
templateEngine.getCacheManager().clearAllCaches();
}
public void setTemplateEngine(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
private String getTemplateKey(Form form) {
return getTemplateKey(form.getReferenceId(), form.getTemplate());
}
private String getTemplateKey(String organizationId, String template) {
return organizationId + "#" + template;
}
private ITemplateResolver defaultTemplateResolver() {
ClreplacedLoaderTemplateResolver templateResolver = new ClreplacedLoaderTemplateResolver();
templateResolver.setPrefix("/views/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML");
return templateResolver;
}
}
19
Source : TemplateResolver.java
with Apache License 2.0
from gravitee-io
with Apache License 2.0
from gravitee-io
public void setTemplateEngine(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
19
Source : ThymeleafConfiguration.java
with Apache License 2.0
from gravitee-io
with Apache License 2.0
from gravitee-io
@Bean
public ThymeleafTemplateEngine getTemplateEngine() {
ThymeleafTemplateEngine thymeleafTemplateEngine = ThymeleafTemplateEngine.create(vertx);
TemplateEngine templateEngine = thymeleafTemplateEngine.getDelegate().getThymeleafTemplateEngine();
// set template resolvers
DomainBasedTemplateResolver overrideTemplateResolver = (DomainBasedTemplateResolver) overrideTemplateResolver();
overrideTemplateResolver.setTemplateEngine(templateEngine);
templateEngine.setTemplateResolver(overrideTemplateResolver);
templateEngine.addTemplateResolver(defaultTemplateResolver());
return thymeleafTemplateEngine;
}
19
Source : DomainBasedTemplateResolver.java
with Apache License 2.0
from gravitee-io
with Apache License 2.0
from gravitee-io
/**
* @author David BRreplacedELY (david.brreplacedely at graviteesource.com)
* @author replacedouan COMPIEGNE (replacedouan.compiegne at graviteesource.com)
* @author GraviteeSource Team
*/
public clreplaced DomainBasedTemplateResolver extends AbstractConfigurableTemplateResolver {
private ConcurrentMap<String, StringTemplateResource> templates = new ConcurrentHashMap<>();
private TemplateEngine templateEngine;
@Override
protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {
boolean templateFound = templates.containsKey(resourceName);
String[] templateParts = resourceName.split(Pattern.quote(FormManager.TEMPLATE_NAME_SEPARATOR));
// template not found for the client, try at domain level
if (!templateFound && templateParts.length == 2) {
resourceName = templateParts[0];
templateFound = templates.containsKey(resourceName);
}
if (templateFound) {
return templates.get(resourceName);
}
return null;
}
public void addForm(String templateName, String templateContent) {
templates.put(templateName, new StringTemplateResource(templateContent));
templateEngine.getCacheManager().clearAllCaches();
}
public void removeForm(String templateName) {
templates.remove(templateName);
templateEngine.getCacheManager().clearAllCaches();
}
public void setTemplateEngine(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
}
19
Source : MailContentBuilder.java
with Apache License 2.0
from gigsterous
with Apache License 2.0
from gigsterous
/**
* <p>
* MailContentBuilder clreplaced.
* </p>
*
* @author Martin Myslik
*/
@Service
public clreplaced MailContentBuilder {
private TemplateEngine templateEngine;
/**
* <p>
* MailContentBuilder constructor.
* </p>
*/
@Autowired
public MailContentBuilder(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
/**
* <p>
* Populate email template with custom message.
* </p>
*/
public String build(String message, String link) {
Context context = new Context();
context.setVariable("message", message);
context.setVariable("link", link);
return templateEngine.process("mail/mail", context);
}
}
19
Source : SubmissionConfiguration.java
with Apache License 2.0
from epam
with Apache License 2.0
from epam
@Bean
public TemplateEngine templateEngine() {
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(fileTemplateResolver());
return templateEngine;
}
19
Source : ThymeleafEngine.java
with Apache License 2.0
from eclipse
with Apache License 2.0
from eclipse
/**
*/
@ApplicationScoped
public clreplaced ThymeleafEngine {
@Inject
private FilesLocator filesLocator;
private TemplateEngine engine;
@PostConstruct
public void init() {
AbstractConfigurableTemplateResolver resolver = new JessieFileTemplateResolver(filesLocator);
resolver.setTemplateMode("TEXT");
engine = new TemplateEngine();
engine.setTemplateResolver(resolver);
}
public String processFile(String file, Set<String> alternatives, Map<String, String> variables) {
StringWriter writer = new StringWriter();
Context context = new Context();
for (Map.Entry<String, String> variable : variables.entrySet()) {
context.setVariable(variable.getKey(), variable.getValue());
}
String fileIndication = filesLocator.findFile(file, alternatives);
if ("-1".equals(fileIndication)) {
throw new TemplateFileResolutionException(file, alternatives);
}
engine.process(fileIndication, context, writer);
return writer.toString();
}
}
19
Source : EmailServiceTest.java
with Apache License 2.0
from Decathlon
with Apache License 2.0
from Decathlon
@ExtendWith(MockitoExtension.clreplaced)
public clreplaced EmailServiceTest {
@Mock
private TemplateEngine templateEngine;
@Mock
private JavaMailSender emailSender;
@InjectMocks
private EmailService cut;
@Test
public void testCompressHtmlSpaces() {
// GIVEN
String html = "" + "<b>\n" + " \r\n" + " <i>html </i>\r\n" + " \r\n" + " \n\n\n" + " </b>";
// WHEN
html = cut.compressHtmlSpaces(html);
// THEN
replacedertThat(html).isEqualTo("" + "<b>\n" + "<i>html </i>\n" + "</b>");
}
}
19
Source : ThymeleafViewEngine.java
with MIT License
from daggerok
with MIT License
from daggerok
@Slf4j
@ApplicationScoped
public clreplaced ThymeleafViewEngine extends ViewEngineBase {
@Inject
ServletContext servletContext;
TemplateEngine engine;
@Override
public boolean supports(final String view) {
return !view.contains(".");
}
@PostConstruct
public void postConstruct() {
final ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContext);
resolver.setPrefix("/WEB-INF/layouts/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCacheable(false);
engine = new TemplateEngine();
engine.setTemplateResolver(resolver);
}
@Override
public void processView(ViewEngineContext context) throws ViewEngineException {
Try.run(() -> {
final HttpServletRequest request = context.getRequest();
final HttpServletResponse response = context.getResponse();
final WebContext webContext = new WebContext(request, response, servletContext, request.getLocale());
webContext.setVariables(context.getModels());
request.setAttribute("view", context.getView());
engine.process(/*layout*/
"default", webContext, response.getWriter());
}).getOrElseThrow(ViewEngineException::new);
}
}
See More Examples