Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot starter mail上的Spring boot read和new mail侦听器_Java_Spring_Spring Mvc_Spring Boot_Jakarta Mail - Fatal编程技术网

Java Spring boot starter mail上的Spring boot read和new mail侦听器

Java Spring boot starter mail上的Spring boot read和new mail侦听器,java,spring,spring-mvc,spring-boot,jakarta-mail,Java,Spring,Spring Mvc,Spring Boot,Jakarta Mail,我想使用springboot MVC演示电子邮件应用程序,在我遵循教程的web应用程序中,我可以使用springboot轻松发送电子邮件 我的问题是 如何使用spring boot阅读电子邮件 如何收听新电子邮件以及如何更新视图中的收件箱 请为我推荐任何解决方案,因为我搜索了很多,但我只能找到发送电子邮件的示例。如果您有使用spring boot的工作示例,请与我分享。谢谢。 你可以考虑使用< /P> 为此目的,有一个解决方案。 可以找到IMAP配置的示例 关键的方面是这样的 @Configur

我想使用
springboot MVC
演示电子邮件应用程序,在我遵循教程的web应用程序中,我可以使用springboot轻松发送电子邮件

我的问题是

  • 如何使用spring boot阅读电子邮件
  • 如何收听新电子邮件以及如何更新视图中的收件箱
  • 请为我推荐任何解决方案,因为我搜索了很多,但我只能找到发送电子邮件的示例。如果您有使用spring boot的工作示例,请与我分享。谢谢。

    你可以考虑使用< /P> 为此目的,有一个解决方案。
    可以找到IMAP配置的示例

    关键的方面是这样的

    @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);
            }
    
        }
    }
    
    @配置
    @使能集成
    公共类集成配置{
    ...
    @豆子
    公共集成流imapIdleFlow(){
    返回积分流
    .from(Mail.imapidleapter(“imap://user:pw@localhost:“+imapIdleServer.getPort()+”/INBOX”)
    .AutoStart(真)
    .SearchTerm策略(此::fromAndNotSeenTerm)
    .userFlag(“testSIUserFlag”)
    .javaMailProperties(p->p.put(“mail.debug”,“false”)
    .put(“mail.imap.connectionpoolsize”,“5”))
    .应自动重新连接(错误)
    .headerMapper(mailHeaderMapper())
    .channel(MessageChannels.queue(“imapIdleChannel”))
    .get();
    }
    @豆子
    公共HeaderMapper mailHeaderMapper(){
    返回新的DefaultMailHeaderMapper();
    }
    private SearchTerm from和notseEnterm(标志supportedFlags,文件夹){
    试一试{
    FromTerm FromTerm=新的FromTerm(新的InternetAddress(“bar@baz"));
    返回newandterm(fromTerm,newflagterm(新标志(Flags.Flag.SEEN),false));
    }
    捕获(地址e){
    抛出新的运行时异常(e);
    }
    }
    }
    <代码> > p>你可以考虑使用< /p>
    为此目的,有一个解决方案。
    可以找到IMAP配置的示例

    关键的方面是这样的

    @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);
            }
    
        }
    }
    
    @配置
    @使能集成
    公共类集成配置{
    ...
    @豆子
    公共集成流imapIdleFlow(){
    返回积分流
    .from(Mail.imapidleapter(“imap://user:pw@localhost:“+imapIdleServer.getPort()+”/INBOX”)
    .AutoStart(真)
    .SearchTerm策略(此::fromAndNotSeenTerm)
    .userFlag(“testSIUserFlag”)
    .javaMailProperties(p->p.put(“mail.debug”,“false”)
    .put(“mail.imap.connectionpoolsize”,“5”))
    .应自动重新连接(错误)
    .headerMapper(mailHeaderMapper())
    .channel(MessageChannels.queue(“imapIdleChannel”))
    .get();
    }
    @豆子
    公共HeaderMapper mailHeaderMapper(){
    返回新的DefaultMailHeaderMapper();
    }
    private SearchTerm from和notseEnterm(标志supportedFlags,文件夹){
    试一试{
    FromTerm FromTerm=新的FromTerm(新的InternetAddress(“bar@baz"));
    返回newandterm(fromTerm,newflagterm(新标志(Flags.Flag.SEEN),false));
    }
    捕获(地址e){
    抛出新的运行时异常(e);
    }
    }
    }
    
    如果您询问如何基于Spring Boot和用于邮件接收的Java库(例如Subetha SMTP)接收电子邮件,您可以检查如果您询问如何基于Spring Boot和用于邮件接收的Java库(例如Subetha SMTP)接收电子邮件,您可以检查
    package com.grandview.service;
    导入java.io.IOException;
    导入java.util.Properties;
    导入javax.annotation.PostConstruct;
    导入javax.mail.Folder;
    导入javax.mail.Message;
    导入javax.mail.MessaginException;
    导入javax.mail.Session;
    导入javax.mail.Store;
    导入org.springframework.beans.factory.annotation.Autowired;
    导入org.springframework.scheduling.annotation.Scheduled;
    导入org.springframework.stereotype.Service;
    导入com.grandview.model.EmailConfig;
    导入com.grandview.util.MessageParser;
    @服务
    公共类电子邮件服务{
    @自动连线
    私有EmailConfig EmailConfig;
    文件夹电子邮件文件夹;
    商店;
    属性=新属性();
    @施工后
    无效设置(){
    String server=emailConfig.getHost();
    properties.put(“mail.pop3.host”,服务器);
    properties.put(“mail.pop3.port”,emailConfig.getPort());
    //properties.put(“mail.pop3.starttls.enable”、“true”);
    会话emailSession=Session.getDefaultInstance(属性);
    Store=null;
    试一试{
    store=emailSession.getStore(“pop3s”);
    连接(服务器,emailConfig.getUsername(),emailConfig.getPassword());
    emailFolder=store.getFolder(“收件箱”);
    }捕获(消息异常e){
    e、 printStackTrace();
    }
    }
    @计划(固定利率=5000)
    synchronized void read()引发MessaginException,IOException{
    emailFolder.open(文件夹只读);
    Message[]messages=emailFolder.getMessages();
    for(int i=0;i
    包com.grandview.service;
    导入java.io.IOException;
    导入java.util.Properties;
    导入javax.annotation.PostConstruct;
    导入javax.mail.Folder;
    导入javax.mail.Message;
    导入javax.mail.MessaginException;
    导入javax.mail.Session;
    导入javax.mail.Store;
    导入org.springframework.beans.factory.annotation.Autowire