这不仅是一个 XPage 问题,也是一个 Lotusscript 问题。
如果您有一个现有的 Body MIMEEntity 字段,并且您想在 Lotuscript 代码或 Java 代码中添加附件……您该怎么做? 我调查了更多时间但没有成功
阅读my previus question to understand the code所以你可以看到,例如我需要附加另一个笔记文档中的附件(或者文件系统是相同的)
我重新插入示例代码(我需要将另一个 RT MIME 字段的附件添加到另一个 RT MIME 字段名称 Body 中,但在此代码之后... 的输出正文已损坏,仅显示新附件..并丢失原始内容..有人知道为什么吗?):
session.setConvertMime(false);
var doc:NotesDocument=document1.getDocument(true);
var mimeRoot:NotesMIMEEntity=doc.getMIMEEntity("Body");
var docAttach:NotesDocument=database.getDocumentByUNID('XXXXXXXUNID'); //doc where are the attachmetns files MIME or RICHTEXT
var XSPReply=wrapDocument(docAttach); //function in Xsnippets from Opentntf.org
var listattachs=XSPReply.getAttachmentList("Body");
for (var i=0; i<listattachs.length; i++) {
var is=null;
var att = listattachs[i];
var persistentName = att.getPersistentName()==null?att.getName():att.getPersistentName();
var cid = att.getCID();
var eo:NotesEmbeddedObject = docAttach.getAttachment(persistentName);
if (null != eo) {
var child:NotesMIMEEntity=mimeRoot.createChildEntity(); //create child of original mail
var emailHeader:NotesMIMEHeader = child.createHeader("Content-Disposition");
emailHeader.setHeaderVal("attachment; filename=\"" + persistentName+ "\"");
emailHeader = child.createHeader("Content-ID");
emailHeader.setHeaderVal("<" + cid + ">");
var is = new java.io.BufferedInputStream(eo.getInputStream());
var stream:NotesStream = session.createStream();
stream.setContents(is);
child.setContentFromBytes(stream, att.getType(),NotesMIMEEntity.ENC_IDENTITY_BINARY);
}
}
doc.closeMIMEEntities(true,"Body")
doc.save()
session.setConvertMime(true);
看起来很简单...但我不知道如何正确编辑存在我的 NotesMimeEntity (这与创建新的 NotesMimeEntity 不同)
非常感谢你!
最佳答案
mime 实体包含一种类型的内容。因此,您不会向现有 mime 实体添加附件,而是创建同级或子实体。 每个实体都包含一件事。因此,每个附件都需要一个实体。
希望能够澄清这一点。
更新:
我的答案是:您不能在 MIME 条目中混合内容类型。它只有一种类型,因此没有必要编辑 mime 条目,而是创建一个新条目。编辑是将内容(将是文本/纯文本或文本/html)读取到流中,在那里更新并将其写回。
如果您想添加附件,则需要添加另一个 MIME 部分。
关于java - 如何修改现有的 NotesMIMEEntity 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460435/