Java mail api消息id在某些情况下返回null

Emi*_*nov 5 java jakarta-mail

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

    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) {
    }
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*non 4

消息不需要具有Message-Id 标头。大多数情况下都会这样做,并且许多服务器如果收到没有此类标头的消息,则会添加一个标头,但也并非不可能遇到没有此类标头的消息。此类消息通常是垃圾邮件。

因此,根据您使用 Message-Id 值的目的,您将必须找到另一种方法来完成它。