JavaMail API : NullPointerException When Accessing Outlook

标签 java outlook jakarta-mail

我当前正在使用以下代码访问我的 Outlook 收件箱。

public void readAllMsgsFromOutlook() throws FileNotFoundException, IOException, MessagingException

{
    //String host = "smtp-mail.outlook.com";

    String emailID = props.getEmail();
    String password = props.getPassword();
    Properties props = new Properties();

    props.setProperty("mail.store.protocol", "imaps");



    try {
        Session session = Session.getInstance(props, null);

        Store store = session.getStore("imaps");
        store.connect("imap-mail.outlook.com", emailID, password);
        Folder inbox = store.getFolder("INBOX");

        inbox.open(Folder.READ_ONLY);

        Message[] msgs = inbox.getMessages();

        System.out.println("Number of New Emails: " + msgs.length);


        for (int msgCounter = 0; msgCounter < msgs.length; msgCounter++) 

        {


            Message msg  = msgs[msgCounter];
            Address[] sender = msg.getFrom();
            Multipart mp =  (Multipart) msg.getContent(); // Throws null pointer exception 
            BodyPart bp = mp.getBodyPart(0);
            Date sentdate = msg.getSentDate();
            String subject = msg.getSubject();
            String content = bp.getContent().toString();


            System.out.println("SENDER: " + sender);
            System.out.println("SENT DATE: " + sentdate.getDate());
            System.out.println("SUBJECT: " + subject);
            System.out.println("CONTENT: " + content);

        }


    } catch (Exception mex) {
        // TODO Auto-generated catch block
        mex.printStackTrace();
    }

}

但是,我使用此代码遇到了 NullPointer 异常。

这是我在控制台中得到的结果:

Number of New Emails: 2
java.lang.NullPointerException
    at javax.mail.internet.ParameterList.set(ParameterList.java:561)
    at com.sun.mail.imap.protocol.BODYSTRUCTURE.parseParameters(BODYSTRUCTURE.java:404)
    at com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:224)
    at com.sun.mail.imap.protocol.FetchResponse.parse(FetchResponse.java:158)
    at com.sun.mail.imap.protocol.FetchResponse.<init>(FetchResponse.java:67)
    at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:136)
    at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:270)
    at com.sun.mail.iap.Protocol.command(Protocol.java:313)
    at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1529)
    at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1521)
    at com.sun.mail.imap.protocol.IMAPProtocol.fetchBodyStructure(IMAPProtocol.java:1221)
    at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1307)
    at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:623)
    at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454)
    at JavaMailAPI.readAllMsgsFromOutlook(JavaMailAPI.java:65)
    at Main.main(Main.java:163)

如果我的收件箱中有两封电子邮件,我不确定为什么会收到 NullPointer 异常..?

最佳答案

您的类路径上混合了来自两个不同 JavaMail 版本的 JavaMail 类。确保您只有一个包含 javax.mail.* 类的 jar 文件。如果您在已包含 JavaMail 的 Java EE 应用程序服务器中运行,请确保您的应用程序中没有包含任何 JavaMail 类。

关于JavaMail API : NullPointerException When Accessing Outlook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37973552/

相关文章:

java - 没有支柱的瓷砖 1 的面包屑

java - 是否可以将一串 Clojure 代码编译为 java 中的类?

sharepoint - 在 Sharepoint 中发送电子邮件

command-line - 使用与会者和位置集打开 Outlook 约会的命令行是什么?

java - 使用 JavaMail 在电子邮件中内嵌图像

java - AWS SNS 响应 JavaMail 链接

java - 基本操作(字符串)问题

java - 从 Spring Boot 1.5.4 升级到 2.0.0 的问题

java - 如何动态创建 VCS 或 ICS 文件(Outlook)?

java - 在 Java Web 应用程序中发送电子邮件