如何修改NotesMIMEEntity字段

时间:2014-01-30 15:21:57

标签: java xpages lotus-notes lotusscript xpages-ssjs

这不仅是一个XPage问题,也是一个Lotusscript问题。

如果你有一个存在的Body MIMEEntity字段,你可以在Lotuscript Code或Java Code中添加例如附件......你怎么能这样做? 我没有成功地调查更多时间

阅读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不同)

非常感谢你!

2 个答案:

答案 0 :(得分:1)

mime实体包含一种类型的内容。因此,您不会向现有mime实体添加附件,而是创建兄弟或子实体。 每个实体包含一件事。因此,每个附件都需要一个实体。

希望澄清一下。

<强>更新
我的回答是:您不要在MIME条目中混合内容类型。它有一种类型,所以没有点编辑mime条目,而是创建一个新的。编辑将是将内容(可以是text / plain或text / html)读入流中,在那里更新并将其写回。 如果要添加附件,则需要添加另一个MIME部分。

答案 1 :(得分:0)

我真的不熟悉SSJS(我在前几次谷歌点击中找不到语法参考),但这看起来不对:

var doc:NotesDocument=document1.getDocument().getMIMEEntity("Body");

您正在调用getMIMEEntity,它返回NotesMIMEEntity类型,但您将其分配给名为var的{​​{1}},我假设{{1}我说doc的类型为:NotesDocument。因此,当你开始致电doc时,我真的无法猜测会发生什么,但我怀疑它会有什么好处。