在某些情况下,Java mail api message id返回null

时间:2016-03-31 06:28:59

标签: java javamail

从我的邮件帐户读取邮件时遇到问题并将其保存在我的数据库中。我的代码如下:

    Store store = null;
    Folder folder = null;
    Message message = null;
    Message[] messages = null;
    Object messagecontentObject = null;
    String sender = null;
    String subject = null;
    Multipart multipart = null;
    Part part = null;
    String contentType = null;
    String dateTime = "";
    String fileName = "";
    Session session = null;
    int count = 0;

    try {
        Properties props = System.getProperties();
        props.setProperty("mail.store.protocol", "imap");

        session = Session.getInstance(System.getProperties(), null);
        store = session.getStore("imap");
        store.connect(mailserver, mail, password);

        folder = store.getDefaultFolder();
        folder = folder.getFolder("Inbox");
        folder.open(Folder.READ_WRITE);

        messages = folder.getMessages();

        // UNREAD messages
        FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
        messages = folder.search(ft);

        for (int i = 0; i < messages.length; i++) {
             message = messages[i];
            subject = message.getSubject();
            String msgId[] =message.getHeader("Message-Id");// Problem  arise here
            System.out.println(msgId[0]);
            boolean flag = true;
        }
    } catch (Exception ex) {
    }

msgId在某些情况下返回null,我找不到解决此问题的方法。

1 个答案:

答案 0 :(得分:4)

消息不是必需以具有Message-Id标头。大多数人都会这样做,如果收到没有邮件的邮件,许多服务器会添加一个,但是如果没有这样的邮件,就不会遇到这样的邮件。这类邮件通常都是垃圾邮件。

因此,根据您使用的Message-Id值,您将不得不找到另一种方法来实现它。