Open dyc87112 opened 6 years ago
如果 VelocityEngineUtils.mergeTemplateIntoString() 方法不可用。可以用下面这种方法来生成模板字符串。链接如下: https://stackoverflow.com/questions/14314143/velocityengineutils-has-been-removed-in-spring-3-2-so-what-else-to-use
接着llyer的回复,我补充一点。新版的springboot不提供与velocity的集成,单独引velocity,我用的是1.7,VelocityEngineUtils.mergeTemplateIntoString() 这个地方会报错,解决方式,参考llyer提供的网站后加以下内容:
@Configuration
public class VelocityEngineConfig {
@Bean
public VelocityEngine velocityEngine() throws Exception {
Properties properties = new Properties();
properties.setProperty("input.encoding", "UTF-8");
properties.setProperty("output.encoding", "UTF-8");
properties.setProperty("resource.loader", "class");
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
VelocityEngine velocityEngine = new VelocityEngine(properties);
return velocityEngine;
}
}
在测试类定义两变量:
@Autowired
private JavaMailSender mailSender;
@Autowired
private VelocityEngine velocityEngine;
重新定义sendTemplateMail发邮件的方法:
@Test
public void sendTemplateMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("abc@qq.com");//邮箱写自己可以测试用的
helper.setTo("abc@qq.com");//邮箱写自己可以测试用的
helper.setSubject("主题:模板邮件");
VelocityContext context = new VelocityContext();
context.put("username", "didi");
StringWriter stringWriter = new StringWriter();
// 需要注意第1个参数要全路径,否则会抛异常
velocityEngine.mergeTemplate("/templates/template.vm", "UTF-8", context, stringWriter);
helper.setText(stringWriter.toString(), true);
mailSender.send(mimeMessage);
}
回复的排版有点乱,可以拷贝到IDEA,格式化就OK
@hzn2003 我编辑了一下,稍微好一些 ^_^
http://blog.didispace.com/springbootmailsender/
相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。 快速入门在Spring Boot的工程中的po