当前位置: 首页 > 知识库问答 >
问题:

Java Spring启动

南门意蕴
2023-03-14

我正在开发一个JavaSpringBootWeb应用程序,用户可以在其中注册。当他们注册时,会收到一封验证电子邮件。当我试图获取电子邮件中的链接以实际确认注册时,这不再起作用,因为我收到错误:“模板解析期间发生错误(模板:“mail/verifyEmail.html”)”。我不知道为什么会这样。我已经附上下面的验证电子邮件。html文件,然后是附带的电子邮件服务。具有EmailService()和sendVerificationEmail()方法的java文件:

<!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]

共有1个答案

陆雨华
2023-03-14

我发现了问题。我的前缀"mail/"是不正确的,因为它实际上是在一个名为"mail模板"的目录中。愚蠢的我。

 类似资料:
  • 我将sping-boot(2.1.6.RELEASE)与sping-kafka(2.2.7.RELEASE)一起使用,并且我使用KafkaTemplate向我的kafka集群发送消息。但是有时(通常是当我重新启动kafka代理或进行重新平衡时),我在发送消息时会看到这样的错误: 由于默认的Kafka生产者配置,我期望发送失败重试,但他们没有。默认Kafka生成器配置: 我的配置是这样的: 我发出这

  • 问题内容: 我正在使用Spring JPA执行所有数据库操作。但是我不知道如何从Spring JPA的表中选择特定的列? 例如: 问题答案: 你可以从这样的类中在注释中进行设置: 请注意,你将不得不自己进行映射。像这样使用常规映射查找可能会更容易,除非你确实只需要这两个值: 也许也值得看一下Spring数据文档。

  • 我试图从OpenAPI v3 YAML文件生成Spring REST接口。构建说: 但是在输出目录中没有生成代码。 我遵循OpenAPI生成器gradle插件doc doc。 我的build.gradle: 我的api。yml: 应用程序编程接口。生成器正确收集yml(如果文件中存在任何语法错误,则生成失败)。 生成日志显示:),这看起来很可疑。这不意味着属性包含生成的结果吗? 渐变版本: 编辑:

  • 我正试图使用提供的MVC Spring项目模板从SpringToolSuite创建一个JAR或WAR文件。当我尝试导出(通过STS)或clean package(maven)代码时,JAR总是无法运行,因为找不到主清单属性。模板项目中也没有提供main()的类。该项目确实在我设置的关键tc服务器实例上的STS中运行。当我试图将项目导出为JAR时,问题就出现了。 这是我的项目的pom.xml:

  • 我有一个问题——我有一个带有websocket的java spring web应用程序,在本教程之后是sockjs实现https://spring.io/guides/gs/messaging-stomp-websocket/我需要用NodeJS连接到这个服务器应用程序。服务器应用程序是正常的,因为我设法通过web应用程序连接,它正在工作,但问题来了,当我试图实现它的nodejs。因此,要明确这一

  • 我有一个Java Spring启动应用程序,其中包含控制器endpoint和一个计划任务。计划的任务安排在每个午夜。我使用docker compose up-d开发这个应用程序,它运行时没有问题。 然而,在计划任务完成后,docker映像以代码1退出,没有任何错误日志。我认为docker认为进程在计划任务后完成,但由于它也被用作网络应用程序,所以不应该退出。 计划任务完成后,是否仍有防止docke

  • 我有javaSpring启动应用程序。我想对经常读取的数据使用缓存。为此,我在我的jar中包含了以下依赖项 我还使用了@EnableCaching注释 使用@Cacheable注释和返回要缓存的数据的函数 但我仍然无法缓存数据。有什么我遗漏的吗?

  • 我尝试对一个包含restclient的服务进行一个简单的测试。看来我没有成功地模仿。看起来代码得到的是真实数据,而不是模拟数据。任何人都可以帮我。 服务本身将如下所示: