Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
无法使用Spring读取电子邮件正文:javax.mail.FolderClosedException_Java_Email_Spring Integration_Jakarta Mail - Fatal编程技术网

无法使用Spring读取电子邮件正文:javax.mail.FolderClosedException

无法使用Spring读取电子邮件正文:javax.mail.FolderClosedException,java,email,spring-integration,jakarta-mail,Java,Email,Spring Integration,Jakarta Mail,我正试着在我的Gmail收件箱中收听收到的邮件。每次新邮件到达时,我都想看看它的主题和内容 到目前为止,我有: import java.io.IOException; import javax.mail.BodyPart; import javax.mail.Folder; import javax.mail.internet.ContentType; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.Mim

我正试着在我的Gmail收件箱中收听收到的邮件。每次新邮件到达时,我都想看看它的主题和内容

到目前为止,我有:

import java.io.IOException;

import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.internet.ContentType;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.mail.util.MimeMessageParser;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.mail.transformer.MailToStringTransformer;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHandler;
import org.springframework.messaging.MessagingException;


public class GmailInboundImapIdleAdapterTestApp {
    private static Log logger = LogFactory.getLog(GmailInboundImapIdleAdapterTestApp.class);

    public static void main (String[] args) throws Exception {
        @SuppressWarnings("resource")
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("/META-INF/spring/integration/gmail-imap-idle-config.xml");

        DirectChannel inputChannel = ac.getBean("receiveChannel", DirectChannel.class);

        inputChannel.subscribe(new MessageHandler() {
            public void handleMessage(Message<?> message){
                    MimeMessage mm = (MimeMessage) message.getPayload();
                    try {
                        System.out.println("Subject: "+mm.getSubject());
                        System.out.println("Body: "+readPlainContent(mm));
                    } 
                    catch (javax.mail.MessagingException e) {

                        System.out.println("MessagingException: "+e.getMessage());
                        e.printStackTrace();
                    }
                    catch (Exception e) {
                        System.out.println("Exception: "+e.getMessage());
                        e.printStackTrace();
                    }

            }
        });
    }

     private static String readHtmlContent(MimeMessage message) throws Exception {
            return new MimeMessageParser(message).parse().getHtmlContent();
        }

    private static String readPlainContent(MimeMessage message) throws Exception {
            return new MimeMessageParser(message).parse().getPlainContent();
        }
}
import java.io.IOException;
导入javax.mail.BodyPart;
导入javax.mail.Folder;
导入javax.mail.internet.ContentType;
导入javax.mail.internet.MimeBodyPart;
导入javax.mail.internet.mimessage;
导入javax.mail.internet.MimeMultipart;
导入org.apache.commons.logging.Log;
导入org.apache.commons.logging.LogFactory;
导入org.apache.commons.mail.util.MimeMessageParser;
导入org.springframework.context.support.ClassPathXmlApplicationContext;
导入org.springframework.integration.channel.DirectChannel;
导入org.springframework.integration.mail.transformer.MailToStringTransformer;
导入org.springframework.messaging.Message;
导入org.springframework.messaging.MessageHandler;
导入org.springframework.MessagingException;
公共类GmailBoundimapidLeadApterTestApp{
私有静态日志记录器=LogFactory.getLog(gmailboundimapidleadaptertestapp.class);
公共静态void main(字符串[]args)引发异常{
@抑制警告(“资源”)
ClassPathXmlApplicationContext ac=新的ClassPathXmlApplicationContext(“/META-INF/spring/integration/gmail imap idle config.xml”);
DirectChannel inputChannel=ac.getBean(“receiveChannel”,DirectChannel.class);
订阅(新的MessageHandler(){
公共无效handleMessage(消息消息){
MimeMessage mm=(MimeMessage)message.getPayload();
试一试{
System.out.println(“主题:+mm.getSubject());
System.out.println(“正文:+readPlainContent(mm));
} 
catch(javax.mail.MessaginException e){
System.out.println(“MessaginException:+e.getMessage());
e、 printStackTrace();
}
捕获(例外e){
System.out.println(“异常:+e.getMessage());
e、 printStackTrace();
}
}
});
}
私有静态字符串readHtmlContent(MimeMessage消息)引发异常{
返回新的mimessageparser(message.parse().getHtmlContent();
}
私有静态字符串readPlainContent(MimeMessage消息)引发异常{
返回新的mimessageparser(message.parse().getPlainContent();
}
}

它可以正确阅读邮件主题。但是邮件正文没有运气。
javax.mail.FolderClosedException
击中了我。如何解决此问题?

正如Gary所说:
simple content=“true”
或最近以来的
autoCloseFolder=false

从5.2版开始,邮件接收器上提供了
autoCloseFolder
选项。将其设置为false不会在提取后自动关闭文件夹,而是将一个
IntegrationMessageHeaderAccessor。CLOSEABLE_RESOURCE
头(有关更多信息,请参阅
MessageHeaderAccessor
API)从通道适配器填充到每个发送给生产者的消息中。当下游流中需要时,目标应用程序负责调用此标头上的
close()


您需要显示您的
gmail imap idle config.xml
。另外,请尝试设置
simple content=“true”