SetViewNames、spring 4、thymeleaf和java
我尝试开发一个应用程序,只需发送一封带有图像的电子邮件。 我看到了一些涉及配置以下属性的解决方案SetViewNames、spring 4、thymeleaf和java,java,spring,spring-mvc,thymeleaf,Java,Spring,Spring Mvc,Thymeleaf,我尝试开发一个应用程序,只需发送一封带有图像的电子邮件。 我看到了一些涉及配置以下属性的解决方案 <property name="viewNames" value="templates/*, pages/*" /> 代码如下: 配置 @Bean public ServletContextTemplateResolver templateResolver(){ ServletContextTemplateResolver resolver=new ServletContex
<property name="viewNames" value="templates/*, pages/*" />
代码如下:
配置
@Bean
public ServletContextTemplateResolver templateResolver(){
ServletContextTemplateResolver resolver=new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".html");
resolver.setCharacterEncoding("UTF-8");
resolver.setTemplateMode("HTML5");
return resolver;
}
@Bean
public ThymeleafViewResolver thymeleafView(){
ThymeleafViewResolver thymeleaf = new ThymeleafViewResolver();
thymeleaf.setTemplateEngine(templateEngine());
thymeleaf.setCharacterEncoding("UTF-8");
thymeleaf.setOrder(1);
return thymeleaf;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
return engine;
}
@Bean
public SpringResourceTemplateResolver SourceTemplateResolver(){
SpringResourceTemplateResolver sourceTemplateResolver = new SpringResourceTemplateResolver();
sourceTemplateResolver.setSuffix(".html");
sourceTemplateResolver.setTemplateMode("HTML5");
return sourceTemplateResolver;
}
观点:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:remove="all">Template for HTML email with inline image</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p> Hello, everybody!</p>
<p> You have been successfully subscribed to the <b>Fake newsletter</b> on</p>
<p>Your hobbies are:</p>
<p> You can find <b>your inlined image</b> just below this text.</p>
<p><img src="LogoLehrer.jpg" th:src="'cid:' + ${imageResourceName}"/></p>
<p> Regards, <br/> <em>The Thymeleaf Team</em></p>
</body>
</html>
以及发送电子邮件的方法:
public void send(String to, String subject, String body,
String recipientName, String recipientEmail,
Locale locale,HttpServletRequest request,
HttpServletResponse response, final MultipartFile image,
final byte[] imageBytes, final String imageResourceName) throws MessagingException {
// final Context ctx = new Context(locale);
final WebContext ctx = new WebContext(request, response, servletContext, locale);
ctx.setVariable("name", recipientName);
ctx.setVariable("mail", recipientEmail);
ctx.setVariable("imageResourceName", imageResourceName);
final String htmlContent = this.templateEngine.process("email_Template", ctx);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper;
helper = new MimeMessageHelper(message,true);
helper.setSubject(subject);
helper.setTo(to);
helper.setText(htmlContent, true);
final InputStreamSource imageSource = new ByteArrayResource(imageBytes);
helper.addInline(image.getName(), imageSource, image.getContentType());
this.javaMailSender.send(message);
}
@RequestMapping("/sendmail")
public void sendMail(final Locale locale, HttpServletRequest request,
HttpServletResponse response,
@RequestParam("imageResourceName") final MultipartFile image)
throws MessagingException, IOException {
mailSender.send("lehrerxx@gmail.com", "prueba spring final",
"I have luck", "Lehrer", locale,request,
response, image, image.getBytes(), image.getName());
}
public void send(String to, String subject, String body,
String recipientName, String recipientEmail,
Locale locale,HttpServletRequest request,
HttpServletResponse response, final MultipartFile image,
final byte[] imageBytes, final String imageResourceName) throws MessagingException {
// final Context ctx = new Context(locale);
final WebContext ctx = new WebContext(request, response, servletContext, locale);
ctx.setVariable("name", recipientName);
ctx.setVariable("mail", recipientEmail);
ctx.setVariable("imageResourceName", imageResourceName);
final String htmlContent = this.templateEngine.process("email_Template", ctx);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper;
helper = new MimeMessageHelper(message,true);
helper.setSubject(subject);
helper.setTo(to);
helper.setText(htmlContent, true);
final InputStreamSource imageSource = new ByteArrayResource(imageBytes);
helper.addInline(image.getName(), imageSource, image.getContentType());
this.javaMailSender.send(message);
}