【发布时间】:2017-12-19 13:56:34
【问题描述】:
尝试通过将邮件正文保存到富文本项中来从电子邮件创建新的 XPages 文档,我的文档已正确创建,附件正文也已创建,但文档中的所有嵌入图像都已替换为 imagePlace 持有者,下面是创建附件和图像的方法
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 转换,例如在创建新文档之前设置
session.setConvertMime(false);? -
是的,我确实 setConvertMime 为 false
-
在文档源中,我可以看到嵌入的图像为 base64 编码但未显示在富文本字段中
-
您是否将文档内容输出到 XPage 上的富文本控件?如果是这样,您可以检查显示的 html 代码并检查嵌入图像的内容 id 是否未正确解析,或者 base64 数据 uri 定义是否存在问题...
-
是的,我将邮件内容输出为富文本格式,并且 html 代码包含 content-ID,如何正确解析 base64?