Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 XPages:将MIME多部分从邮件复制到另一个Richtext文档_Java_Email_Xpages - Fatal编程技术网

Java XPages:将MIME多部分从邮件复制到另一个Richtext文档

Java XPages:将MIME多部分从邮件复制到另一个Richtext文档,java,email,xpages,Java,Email,Xpages,试图通过将邮件正文保存到richtext项目中来从电子邮件创建新的XPages文档,我的文档已正确创建attachmentBody也已创建,但文档中所有嵌入的图像都已替换为ImagePlaceHolder,下面是创建附件和图像的方法 private static void parseMimeEntity(RichTextItem attachmentBody, MIMEEntity entity,Session session,File tmpFolder,String fileSeparato

试图通过将邮件正文保存到richtext项目中来从电子邮件创建新的XPages文档,我的文档已正确创建attachmentBody也已创建,但文档中所有嵌入的图像都已替换为ImagePlaceHolder,下面是创建附件和图像的方法

private static void parseMimeEntity(RichTextItem attachmentBody, MIMEEntity entity,Session session,File tmpFolder,String fileSeparator,long attachmentNumber) {
    MIMEEntity child;
        try{        
            if(!entity.getContentType().equalsIgnoreCase("text")){
                String filename = null; 
                MIMEHeader header = null;
                header = entity.getNthHeader("Content-Disposition");    
                if (header != null) {
                    filename = header.getParamVal("filename");
                    filename = filename.replace("\"", "");
                    if ("".equals(filename)) filename = null;
                }
                if (filename == null) {
                    // when filename is null
                    filename = "Attachment" + attachmentNumber++ + ".txt";
                }
                String contentDisposition = entity.getNthHeader("Content-Disposition").getHeaderVal();

                if(contentDisposition.equalsIgnoreCase("inline")){                      
                    String contentType = entity.getNthHeader("Content-Type").getHeaderVal();                        
                    Stream stream = session.createStream();
                    if (stream.open(file.getAbsolutePath(), "binary")) {
                        entity.setContentFromBytes(stream, contentType, MIMEEntity.ENC_IDENTITY_BINARY);                        
                        stream.close();
                    }
                }else{

                Stream stream = session.createStream();
                if (stream.open(file.getAbsolutePath(), "binary")) {
                    entity.getContentAsBytes(stream);                           
                    stream.close();
                }                   
                attachmentBody.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", file.getAbsolutePath(), filename);      
                }   
                file.delete();
            }
        }
        catch(Exception ex){                
            System.out.println("NO FILE");
        }
        child = entity.getFirstChildEntity();
        if (child != null) {
            parseMimeEntity(attachmentBody, child,session,tmpFolder,fileSeparator,attachmentNumber);
        }
        child = entity.getNextSibling();
        if (child != null) {
            parseMimeEntity(attachmentBody, child,session,tmpFolder,fileSeparator,attachmentNumber);
        }   
    }

当您创建一个新的mime条目时,您将获得新的边界字符串,作为嵌入图像的键。检查传入图像的
src
属性以了解确切格式

您需要调整这些属性以使图像正确显示。清理HTML并不是一件有趣的事情,请参考本文中的一些要点:


最终(需要检查,我不知道),您可以指定边界并保存HTML清理

一个解决方案是对嵌入的图像进行Base64编码,而不是将嵌入的图像添加为附件。查看我的答案:。

您是否确保禁用了MIME转换,例如通过设置
session.setConvertMime(false)创建新文档之前?是的,我在文档中将ConvertMIME设置为False,因为我可以看到嵌入的图像是base64编码的,但没有显示在richtext字段中。是否将文档内容输出到XPage上的richtext控件?如果是这样,您可以检查显示的html代码,并检查嵌入图像的内容ID是否未正确解析,或者base64数据uri定义是否存在问题……是的,我正在将邮件内容输出到richtext,并且html代码包含内容ID,如何正确解析base64?图像已作为base64存储在文档中,但当我使用maildocument.getEmbeddedImagesList(“正文”)时,它返回空列表