java - spring-boot-starter-mail 上的 Spring Boot 读取和新邮件监听器

标签 java spring spring-mvc spring-boot jakarta-mail

我想在我关注的 Web 应用程序中使用 spring boot MVC 演示电子邮件应用程序 this教程我可以使用 Spring Boot 轻松发送电子邮件。

我的问题是

  1. 如何使用 Spring Boot 阅读电子邮件..?
  2. 如何收听新电子邮件以及如何更新 View 上的收件箱..?

请向我建议任何解决方案,因为我搜索了很多,但我只能找到发送电子邮件的示例。如果您有任何使用 Spring Boot 的工作示例,请与我分享。提前致谢。

最佳答案

您可以考虑使用Spring integration mail support

有一个Java DSL为此目的。
IMAP 配置示例可以在 here 中找到。

关键方面是这样的

@Configuration
@EnableIntegration
public class IntegrationConfig {
    ...

    @Bean
    public IntegrationFlow imapIdleFlow() {
        return IntegrationFlows
                .from(Mail.imapIdleAdapter("imap://user:pw@localhost:" + imapIdleServer.getPort() + "/INBOX")
                        .autoStartup(true)
                        .searchTermStrategy(this::fromAndNotSeenTerm)
                        .userFlag("testSIUserFlag")
                        .javaMailProperties(p -> p.put("mail.debug", "false")
                                .put("mail.imap.connectionpoolsize", "5"))
                        .shouldReconnectAutomatically(false)
                        .headerMapper(mailHeaderMapper()))
                .channel(MessageChannels.queue("imapIdleChannel"))
                .get();
    }

    @Bean
    public HeaderMapper<MimeMessage> mailHeaderMapper() {
        return new DefaultMailHeaderMapper();
    }

    private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) {
        try {
            FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz"));
            return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false));
        }
        catch (AddressException e) {
            throw new RuntimeException(e);
        }

    }
}

关于java - spring-boot-starter-mail 上的 Spring Boot 读取和新邮件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46884327/

相关文章:

java - 处理帖子请求

java - 使用 Retrofit 解析 Android 的 JSON

java - Singleton Spring bean 被创建多次

Spring Boot + Spring Cloud Config - 如何从 Git 外部配置添加更多配置文件

java - 如何在Spring Boot中使用MySql数据库查询?

java - 如何使用 JPA 2.1 转换连接的元素集合?

java - Spring boot 持久化上下文注解

java - Tomcat 使用 Spring 时出现 404 错误?

java - Thymeleaf:从 Spring-MVC Controller 重定向时,thymeleaf 不反射(reflect)新值

java - 如何在不由 spring 容器维护的类中 Autowiring 成员变量?