首页 > 解决方案 > 使用 javax.mail.Folder.getMessages() 获取邮件失败

问题描述

我曾经javax.mail收到过邮件,但什么也没收到。

    private void init(Properties prop) {
    log.info("Initializing. ");
    Session session = Session.getDefaultInstance(prop);
    try {
        store = session.getStore(protocol);

    } catch (NoSuchProviderException e){
        log.error("Failed to initialize! " + e);
        e.printStackTrace();
        return;
    }
    try {
        store.connect(host, username, password);
        folder = store.getFolder("INBOX");
        folder.open(Folder.READ_WRITE);
    } catch (AuthenticationFailedException e){
        log.error("Failed to login. ");
        e.printStackTrace();
    } catch (MessagingException e){
        log.error("Cannot connect to the host. ");
        e.printStackTrace();
    }
}

在这里我确定邮箱可以正确连接。

public Message[] receiveMessages(Date start, Date end){
    log.info("Getting mails from " + start + " to " + end + " it's " + ((end.getTime() - start.getTime()) / 1000) + "seconds. ");
    Message[] messages = null;
    SearchTerm termStart = new SentDateTerm(ComparisonTerm.GT, start);
    SearchTerm termEnd = new SentDateTerm(ComparisonTerm.LE, end);
    SearchTerm term = new AndTerm(termStart, termEnd);
    try{
        messages = folder.search(term);
        log.info("Got " + messages.length + " mail(s)");
    } catch (MessagingException e){
        log.error("Failed to get mails. ");
        e.printStackTrace();
    }
    return messages;
}

这里,messages.length0。但是在指定的时间内,邮箱中有一些邮件。

2020-05-13 15:54:32.287  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : Initializing. 
2020-05-13 15:54:32.349  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.config.XMLToMailConfig     : Get users = helong
2020-05-13 15:54:32.349  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.config.XMLToMailConfig     : Get users = wanghai
2020-05-13 15:54:32.349  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.config.XMLToMailConfig     : Get users = zhuhaishan
2020-05-13 15:54:32.349  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : Try to connect to mailbox: security_device@bmac.sec。
2020-05-13 15:54:32.350  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : users = [helong, wanghai, zhuhaishan]
2020-05-13 15:54:32.350  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : Initializing. 
2020-05-13 15:54:32.369  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.job.GetMailAndProcess      : agentId = 1000059
2020-05-13 15:54:32.369  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : Getting mails from Wed May 13 15:51:30 CST 2020 to Wed May 13 15:54:32 CST 2020, it's 181 seconds. 
2020-05-13 15:54:32.374  INFO 3878 --- [pool-1-thread-1] c.u.mailOrder.util.MailConfigXML         : Got 0 mail(s). 

我试过其他邮箱,发现那些主机可以收到邮件并处理它们。
我想知道这可能是什么原因造成的?是否是邮箱主机问题?如何避免收到0邮件?

标签: javajakarta-mail

解决方案


推荐阅读