Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式将Lotus Notes电子邮件文档转换为MIME格式_Java_Email_Lotus Notes_Mime - Fatal编程技术网

Java 如何以编程方式将Lotus Notes电子邮件文档转换为MIME格式

Java 如何以编程方式将Lotus Notes电子邮件文档转换为MIME格式,java,email,lotus-notes,mime,Java,Email,Lotus Notes,Mime,我开始开发一个复杂的解决方案,然后发现DxlExporter将为您完成所有工作。我想分享这个简单的解决方案。通过convertToMIME()将文档转换为MIME后,使用DxlExporter完成其余工作。它创建包含标记的XML输出,完全转换的MIME格式文档的输出位于该标记中。此代码不执行完整的XML解析。它只需抓取标记之间的所有内容。我已经用这段代码成功地转换了10万个电子邮件文档,只有少数几个失败——所有这些都来自格式不正确的外部电子邮件文档。我在Notes来源的电子邮件文档上获得了100

我开始开发一个复杂的解决方案,然后发现
DxlExporter
将为您完成所有工作。我想分享这个简单的解决方案。

通过
convertToMIME()将文档转换为
MIME
后,使用
DxlExporter
完成其余工作。它创建包含
标记的XML输出,完全转换的MIME格式文档的输出位于该标记中。此代码不执行完整的XML解析。它只需抓取
标记之间的所有内容。我已经用这段代码成功地转换了10万个电子邮件文档,只有少数几个失败——所有这些都来自格式不正确的外部电子邮件文档。我在Notes来源的电子邮件文档上获得了100%的成功

import lotus.domino.Document;
import lotus.domino.DxlExporter;
import lotus.domino.NotesException;
import lotus.domino.Session;

public class DocToMimeConverter
{
    private static final int MIMEOPTION_DXL = 0;
    private static final String tagStart = "<mime><![CDATA[";
    private static final String tagEnd = "]]></mime>";

    private DxlExporter exporter = null;
    
    public DocToMimeConverter(Session session) throws NotesException
    {
        super();
        exporter = session.createDxlExporter();
    }

    public String convert(Document doc) throws NotesException
    {
        String mimeDoc = null;
        
        exporter.setMIMEOption(MIMEOPTION_DXL);
        
        doc.removeItem("$KeepPrivate");
        doc.convertToMIME(Document.CVT_RT_TO_PLAINTEXT_AND_HTML);
        String dxl = exporter.exportDxl(doc);
        
        int idxStart = dxl.indexOf(tagStart);
        int idxEnd = dxl.indexOf(tagEnd);
        
        if (idxStart != -1 && idxEnd != -1 && idxEnd > idxStart)
        {
            mimeDoc = dxl.substring(idxStart + tagStart.length(), idxEnd);
        }
        
        return mimeDoc;
    }
}
setConvertMIME(false)
表示不要将任何本机MIME格式的文档转换为Notes格式。如果您的目标是进行MIME转换,则此功能非常有用。节省一点时间和往返误差

我使用以下代码在呼叫程序中选择电子邮件:

Session s = NotesFactory.createSession((String)null, (String)null, NotesAuth.getPassword());
s.setConvertMIME(false);
if ("Memo".equals(doc.getItemValueString("Form")) ||
        "Reply".equals(doc.getItemValueString("Form")))

在我的用例中,我使用Notes文档的UUID以及
“*.EML”
为每个电子邮件创建单独的文件。这些文件随后被成功导入另一个电子邮件系统。

我已经有10年左右没有听说过Lotus Notes了。实际上很有意思的是,它仍然在某处使用。@PM77-1:该产品在许多年前被重命名为IBM Notes(和IBM Domino),在HCL几年前购买后,现在是HCL Notes和HCL Domino。版本11是去年发布的,版本12是测试版,将在今年夏天发布,版本13已经计划好了。安装的基础实际上正在增长,而且它被用于比你想象的更多的地方。