如何从Lotus Notes domino服务器获取JAVA中所有未读的电子邮件

时间:2013-01-14 09:32:02

标签: java lotus-notes lotus-domino lotus

我是Notes JAVA API的新手,并开发了一个实用工具,我需要从Lotus Notes id读取所有未读邮件。现在我尝试使用 lotus.domino.Database.getAllUnreadDocuments()它给了我以下异常

NotesException: Not implemented
at lotus.domino.cso.Base.notImplemented(Unknown Source)
at lotus.domino.cso.Document.markRead(Unknown Source)
at com.email.ReadEmailRemotely.readEmails(ReadEmailRemotely.java:428)
at com.email.ReadEmailRemotely.run(ReadEmailRemotely.java:96)
at java.lang.Thread.run(Unknown Source)

我的应用程序是使用NCSO.jar

在eclipse中的普通JAVA应用程序

我的问题是,我是否需要扩展lotus.domino.AgentBase?

如果是,那么我需要的所有依赖项,JAVA应用程序不允许扩展它。 &安培;如果没有那么有没有其他方法来获取所有未读邮件?

4 个答案:

答案 0 :(得分:0)

如果服务器支持IMAP或POP3,您可以使用JavaMail API,这非常简单并且有未读消息的标记。

    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");

    try {
            Session session = Session.getDefaultInstance(props, null);
            Store store = session.getStore("imaps");
            store.connect("myserver.com", "user", "pass");

            Folder inbox = store.getFolder("Inbox");
            inbox.open(Folder.READ_ONLY);

            FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
            Message messages[] = inbox.search(ft);
     }

答案 1 :(得分:0)

一种简单的方法(假设您可以编辑NSF)是创建一个隐藏视图,该视图仅列出您想要返回的文档。

然后访问该视图并迭代它。

答案 2 :(得分:0)

您必须切换到使用notes.jar而不是ncso.jar。

为了使用notes.jar并访问getAllUnreadDocuments方法,您需要在运行代码的系统上安装Notes和Domino 8或更高版本。

答案 3 :(得分:0)

可能需要安全连接(SSL),使用以下属性连接支持POP3协议的邮件服务器:

        properties.put("mail.pop3.socketFactory.port", "POP3_PORT");
        properties.put("mail.pop3.host", "POP3_SERVER_HOST_NAME_OR_IP");
        properties.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.put("mail.pop3.socketFactory.fallback", "false");