Я разрабатываю Java Spring Boot Web App, в котором пользователи могут зарегистрироваться. Когда они регистрируются, им отправляется письмо с подтверждением. Это больше не работает, когда я пытался получить ссылку в электронном письме для фактического подтверждения регистрации, потому что я получаю сообщение об ошибке: «Произошла ошибка во время синтаксического анализа шаблона (шаблон:« mail / verifyEmail. html »)». Я не уверен, почему это могло быть. Я прикрепил ниже файл verifyEmail. html, а затем прилагаемый файл EmailService. java, в котором есть методы EmailService () и sendVerificationEmail ():
<!DOCTYPE html>
<html>
<th:block xmlns:th="http://www.thymeleaf.org">
<span th:text="'Hello ' + ${name}"></span>
<p>Thank you for registering for the bcoreHW site!</p>
<p>Please click <a href="#">here</a> to verify your email address.</p>
</th:block>
</html>
import java.util.Date;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
@Value("${mail.enable}")
private boolean enable;
private TemplateEngine templateEngine;
private void send(MimeMessagePreparator preparator) {
if(enable) {
mailSender.send(preparator);
}
}
@Autowired
public EmailService(TemplateEngine templateEngine) {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("mail/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCacheable(false);
templateEngine.setTemplateResolver(templateResolver);
this.templateEngine = templateEngine;
}
public void sendVerificationEmail(final String emailAddress) {
Context context = new Context();
context.setVariable("name", "Bob");
final String emailContents = templateEngine.process("verifyEmail", context);
System.out.println(emailContents);
MimeMessagePreparator preparator = new MimeMessagePreparator() {
// not working for some reason: @Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
message.setTo(emailAddress);
message.setFrom(new InternetAddress("no-reply@testSite.com"));
message.setSubject("Please Verify Your Email Address");
message.setSentDate(new Date());
message.setText(emailContents, true);
}
};
send(preparator);
}
}
Кто-нибудь видит что-нибудь не так с этим? Спасибо. Кроме того, вот сообщение об ошибке, которое я получаю:
Caused by: java.io.FileNotFoundException: ClassLoader resource "mail/verifyEmail.html" could not be resolved
at org.thymeleaf.templateresource.ClassLoaderTemplateResource.reader(ClassLoaderTemplateResource.java:130) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:223) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]