Java 无法从Lotus Notes中的邮件中获取HTML内容,getMIMEEntity()即使在setConvertMIME之后也返回null(false)

Java 无法从Lotus Notes中的邮件中获取HTML内容,getMIMEEntity()即使在setConvertMIME之后也返回null(false),java,eclipse,lotus-notes,document,lotus-domino,Java,Eclipse,Lotus Notes,Document,Lotus Domino,作为LotusNotes9插件开发的一部分,我正在尝试读取文档对象(mail)的HTML内容 有了这个HTML内容,我们希望创建一个文件,并在查询中将其作为附件文件发送,这样我们就可以保留格式、图像等 即使在session.setConvertMIME(false)之后调用doc.getMIMEEntity()时,我仍然无法获取Mime实体 我在“首选项>邮件>互联网”中设置了首选项 Internet邮件格式为“HTML和纯文本” 我尝试了doc.createMIMEEntity,然后试图检索它

作为LotusNotes9插件开发的一部分,我正在尝试读取文档对象(mail)的HTML内容

有了这个HTML内容,我们希望创建一个文件,并在查询中将其作为附件文件发送,这样我们就可以保留格式、图像等

即使在
session.setConvertMIME(false)之后
调用
doc.getMIMEEntity()
时,我仍然无法获取Mime实体

  • 我在“首选项>邮件>互联网”中设置了首选项

    Internet邮件格式为“HTML和纯文本”

  • 我尝试了
    doc.createMIMEEntity
    ,然后试图检索它
  • mimePart=doc.getMIMEEntity(“正文”)
  • 当我右键单击outlook的邮件时,我可以看到多个正文项目,其中一个包含HTML部分。但是我仍然无法通过
    getMIMEEntity
    访问它

    我从LotusNotes创建的邮件没有多个正文项。当我从LotusNotes>Outlook收到邮件并在Outlook中检查源代码时,我将其视为HTML。所以我假设有一个地方发生了这种转换

    ShelfSession.getInstance().localSession.setConvertMime(false);
    MIMEEntity nMime = (MIMEEntity) doc.getMIMEEntity("Body");
    
    我希望将Mime部分设置为该变量,以便检索内容以形成HTML文件

    请提供任何代码建议,或者我是否遗漏了某些Lotus notes设置,使Mime变量始终为空?

    您说过,“我从Lotus notes创建的邮件没有多个正文项。”这几乎肯定意味着正文项存储为富文本而不是Mime。您可以通过查看Notes中的文档属性来确认这一点

    您可以使用
    document.convertToMIME()
    将正文项从Notes富文本转换为MIME。下面是一个例子:

        MIMEEntity mimeEntity = null;
        Item item = document.getFirstItem("Body");
        if (item != null) {
            if (item.getType() == Item.RICHTEXT) {
                // Convert Notes rich text to MIME
                document.convertToMIME(Document.CVT_RT_TO_PLAINTEXT_AND_HTML, 0);
            } 
            mimeEntity = document.getMIMEEntity();
        }
    

    我根据XPages扩展库中的一些代码改编了这个示例。我鼓励您查看该代码以了解更多上下文。例如,您仍然需要调用
    session.setConvertMIME(false)
    ,以避免将已经是MIME的文档转换为富文本。
    MimeEntityHelper
    类同时使用
    session.setConvertMIME()
    document.convertToMIME()
    来控制文档转换。

    当您执行“doc.getMIMEEntity(“Body”)时,mimePart是否为null?是的,它是null,我甚至尝试过getMIMEPart();没有参数请使用更多相关源代码更新您的问题检查文档属性框中的项目时,邮件是否将$NoteHasNativeMIME设置为1?我猜不是,戴夫·迪莱是对的。谢谢你的建议。但是在document.convertToMIME行(document.CVT\u RT\u TO\u PLAINTEXT\u和\u HTML,0);我在控制台中得到这个异常:CD-to-MIME错误(进程:?(00005974:00000002),数据库:CN=dewdfgwd0194/O=c4c!!mail\aramesh.nsf,注意:00006B82):远程数据库的数据库句柄不能由多个线程使用。结束CD到MIME的转换(进程:?(00005974:00000002),数据库:CN=dewdfgwd0194/O=c4c!!mail\aramesh.nsf,注意:00006B82)是否在多个线程中使用相同的
    数据库
    实例?如错误消息所示,这是不受支持的。
    convertToMIME()
    没有问题。我会回复您的。我尝试使用第85-89行中的MimeEntityHelper,即else块,这对我来说非常有效。我得到了HTML正文,但没有样式信息(使用getContentAsText())。我需要整个HTML内容来生成一个文件(.HTML文件),该文件将在我们的浏览器应用程序中进一步重新呈现。在Outlook客户端中,我可以使用邮件的HTMLbody属性检索整个邮件的HTML内容。您能告诉我在哪里可以找到带有样式信息的整个HTML吗?我必须使用mime实体重新格式化它吗?我不确定你所说的“HTML正文但没有样式信息”是什么意思。我需要看一个例子,但这听起来像是一个单独的问题。StackOverflow不是为在评论部分提出新问题而设计的。你能就这个话题发表一个单独的问题吗?我在这里发表了一个新问题: