Hello Domino程序员!
我在Lotus数据库+ XPages上工作,我遇到了以下问题:
我收到的邮件是"备忘录"直接到我的数据库的文件。我想将附件和邮件正文(带有嵌入图像)分成两个richtext字段。为了实现这一点,我做了一个java代理。想法似乎对我的解决方案很好,但每次我尝试复制一个Richtextitem" Body"从邮件到另一个文档,创建的项目包含Richtext元素而不是MIME部分。这样会很好,但通过这一点,整个消息似乎失去了格式化。我知道存在一个"开关"这应该可以防止这种情况发生 - session.setConvertMime(false)。我在访问源文档之前使用它但没有任何效果 - 我的Richtext字段是空白的。
所以我有很多问题:
任何帮助将不胜感激。
// 我使用9.0设计器和9.0开发服务器。
//这是我目前使用的代码
Session session = getSession();
String TMPSAVE_PATH = System.getProperty("java.io.tmpdir");
Database db = session.getCurrentDatabase();
View v = db.getView("Inbox");
ViewEntryCollection vec = v.getAllEntries();
ViewEntry entry = vec.getFirstEntry();
while(entry!=null)
{
Document mailDoc = entry.getDocument();
Document newDoc = db.createDocument();
newDoc.replaceItemValue("Form", "Ticket");
newDoc.replaceItemValue("Title","[MAIL] " + mailDoc.getItemValueString("Subject"));
newDoc.replaceItemValue("Status", "0");
newDoc.computeWithForm(true, true);
newDoc.save(false,true);
RichTextItem rtiOLD = (RichTextItem)mailDoc.getFirstItem("Body");
newDoc.removeItem("Description");
RichTextItem rtiDESC = newDoc.createRichTextItem("Description");
rtiDESC.appendRTItem(rtiOLD);
newDoc.removeItem("Attachment");
RichTextItem rtiATT = newDoc.createRichTextItem("Attachment");
newDoc.save(false,true);
List attachmentList = new ArrayList();
Vector vector = rtiDESC.getEmbeddedObjects();
if(vector.size()>0)
{
for (int i = 1; i <= vector.size(); i++)
{
String attachmentName = vector.get(i-1).toString();
EmbeddedObject obj = (EmbeddedObject)vector.get(i-1);
if(obj!=null)
{
attachmentList.add(attachmentName);
obj.extractFile(TMPSAVE_PATH + attachmentName);
obj.remove();
}
}
}
newDoc.save(false,true);
if(attachmentList.size()>0)
{
for (int i = 0; i < vector.size(); i++)
{
rtiATT.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", TMPSAVE_PATH + attachmentList.get(i), (String)attachmentList.get(i));
File file = new File(TMPSAVE_PATH + attachmentList.get(i));
file.delete();
}
}
newDoc.save(false,true);
}
entry = vec.getNextEntry(entry);
//更改标题以适合问题。
答案 0 :(得分:0)
我相信this IBM technote解释了你的问题。对AppendRTItem()的调用不会复制与附件关联的$ File项目。
答案 1 :(得分:0)
我通过多个使用方法NotesDocument.getFirstItem然后使用NotusDocument.AppendItemValue来解决问题,所以我只需复制整个邮件正文。