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

Java mail api消息id在某些情况下返回null,java,jakarta-mail,Java,Jakarta Mail,我在从我的邮件帐户读取邮件并将其保存到数据库时遇到问题。我的代码如下: Store store = null; Folder folder = null; Message message = null; Message[] messages = null; Object messagecontentObject = null; String sender = null; String subject = null; Multipar

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

    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) {
    }
Store-Store=null;
文件夹=null;
Message=null;
Message[]messages=null;
对象messagecontentObject=null;
字符串发送器=null;
字符串subject=null;
Multipart Multipart=null;
Part=null;
字符串contentType=null;
字符串dateTime=“”;
字符串fileName=“”;
会话=空;
整数计数=0;
试一试{
Properties props=System.getProperties();
props.setProperty(“mail.store.protocol”、“imap”);
session=session.getInstance(System.getProperties(),null);
store=session.getStore(“imap”);
连接(邮件服务器、邮件、密码);
folder=store.getDefaultFolder();
folder=folder.getFolder(“收件箱”);
文件夹。打开(文件夹。读写);
messages=folder.getMessages();
//未读邮件
FlagTerm ft=新FlagTerm(新标志(Flags.Flag.SEEN),false);
消息=文件夹搜索(ft);
for(int i=0;i

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

消息不需要有消息Id头。大多数情况下是这样的,如果服务器接收到没有消息头的消息,许多服务器都会添加消息头,但是遇到没有消息头的消息并非不可能。这类邮件通常是垃圾邮件

因此,根据您使用消息Id值的目的,您必须找到另一种方法来实现它